Files
SGGL_SHJ/SGGL/BLL/HJGL/WeldingManage/WeldTaskService.cs
T

469 lines
23 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
public static class WeldTaskService
{
/// <summary>
///获取焊接任务单信息
/// </summary>
/// <returns></returns>
public static Model.HJGL_WeldTask GetWeldTaskById(string WeldTaskId)
{
return Funs.DB.HJGL_WeldTask.FirstOrDefault(e => e.WeldTaskId == WeldTaskId);
}
/// <summary>
///根据焊口id获取焊接任务单信息
/// </summary>
/// <returns></returns>
public static Model.HJGL_WeldTask GetWeldTaskByWeldJointId(string weldJointId)
{
Model.SGGLDB db = Funs.DB;
return db.HJGL_WeldTask.FirstOrDefault(e => e.WeldJointId == weldJointId);
}
/// <summary>
///获取焊接任务单编号
/// </summary>
/// <returns></returns>
public static string GetTaskCodeByDate(string projectId, string date, string unitworkid, string unitid)
{
string code = string.Empty;
var list = (from x in Funs.DB.HJGL_WeldTask where x.ProjectId == projectId && x.UnitWorkId == unitworkid && x.UnitId == unitid && x.TaskDate == Convert.ToDateTime(date) orderby x.TaskCode descending select x.TaskCode).Distinct().ToList();
var count = list.Count;
code = date + "-" + (count + 1).ToString("D3") + UnitService.GetUnitCodeByUnitId(unitid) + "-" + UnitWorkService.getUnitWorkByUnitWorkId(unitworkid)?.UnitWorkCode;
/*if (list.Count > 0)
{
string oldCode = list[0];
if (oldCode.Length > 4)
{
string partCode = oldCode.Substring(8,3);
int num = Funs.GetNewIntOrZero(partCode) + 1;
if (num < 10)
{
code = date + "-00" + num;
}
else if (num >= 10 && num < 100)
{
code = date + "-0" + num;
}
else
{
code = date + "-" + num;
}
}
else
{
code = date + "-001";
}
}
else
{
code = date + "-001";
}
code = code.Replace("-", "") + "-" + UnitService.GetUnitCodeByUnitId(unitid) + "-" + UnitWorkService.getUnitWorkByUnitWorkId(unitworkid)?.UnitWorkCode;*/
return code;
}
public static string GetSerialNumberByDate(string projectId, string date, string unitworkid, string unitid)
{
string code = string.Empty;
var list = (from x in Funs.DB.HJGL_WeldTask where x.ProjectId == projectId && x.UnitWorkId == unitworkid && x.UnitId == unitid && x.TaskDate == Convert.ToDateTime(date) orderby x.TaskCode descending select x.TaskCode).Distinct().ToList();
var count = list.Count;
code = (count + 1).ToString("D3");
return code;
}
public static string GetSerialNumberByDate(string projectId, string taskCode)
{
string result = string.Empty;
var list = (from x in Funs.DB.HJGL_WeldTask where x.ProjectId == projectId && x.TaskCode == taskCode orderby x.SerialNumber descending select x.SerialNumber).FirstOrDefault();
result = list?.ToString();
return result;
}
public static List<Model.View_HJGL_WeldingTask> GetWeldingTaskList(string ProjectId, string UnitWorkId, string unitId, DateTime taskDate, string canWelder, string serialNumber)
{
var q = from x in Funs.DB.View_HJGL_WeldingTask
where x.ProjectId == ProjectId && x.UnitWorkId == UnitWorkId
&& x.TaskDate.Value.Date == taskDate.Date
select x;
if (!string.IsNullOrEmpty(unitId))
{
q = q.Where(x => x.UnitId == unitId);
}
if (!string.IsNullOrEmpty(serialNumber))
{
q = q.Where(x => x.SerialNumber == serialNumber);
}
if (canWelder == "0")
{
q = q.Where(x => x.CanWelderId == null);
}
else if (canWelder == "1")
{
q = q.Where(x => x.CanWelderId != null);
}
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>
/// <param name="WeldTask"></param>
public static void AddWeldTask(Model.HJGL_WeldTask WeldTask)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_WeldTask newWeldTask = new Model.HJGL_WeldTask
{
WeldTaskId = WeldTask.WeldTaskId,
ProjectId = WeldTask.ProjectId,
UnitId = WeldTask.UnitId,
UnitWorkId = WeldTask.UnitWorkId,
WeldJointId = WeldTask.WeldJointId,
TaskDate = WeldTask.TaskDate,
CoverWelderId = WeldTask.CoverWelderId,
BackingWelderId = WeldTask.BackingWelderId,
JointAttribute = WeldTask.JointAttribute,
Tabler = WeldTask.Tabler,
TableDate = WeldTask.TableDate,
TaskCode = WeldTask.TaskCode,
WeldingMode = WeldTask.WeldingMode,
WeldingRod = WeldTask.WeldingRod,
WeldingWire = WeldTask.WeldingWire,
CanWeldingRodName = WeldTask.CanWeldingRodName,
CanWeldingWireName = WeldTask.CanWeldingWireName,
PipeLineSortIndex = WeldTask.PipeLineSortIndex,
SerialNumber = WeldTask.SerialNumber,
TeamGroupId = WeldTask.TeamGroupId
};
db.HJGL_WeldTask.InsertOnSubmit(newWeldTask);
db.SubmitChanges();
}
/// <summary>
/// 修改焊接任务单信息
/// </summary>
/// <param name="WeldTask"></param>
public static void UpdateWeldTask(Model.HJGL_WeldTask WeldTask)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_WeldTask newWeldTask = db.HJGL_WeldTask.FirstOrDefault(e => e.WeldTaskId == WeldTask.WeldTaskId);
if (newWeldTask != null)
{
newWeldTask.WeldTaskId = WeldTask.WeldTaskId;
newWeldTask.ProjectId = WeldTask.ProjectId;
newWeldTask.UnitId = WeldTask.UnitId;
newWeldTask.UnitWorkId = WeldTask.UnitWorkId;
newWeldTask.WeldJointId = WeldTask.WeldJointId;
newWeldTask.TaskDate = WeldTask.TaskDate;
newWeldTask.CoverWelderId = WeldTask.CoverWelderId;
newWeldTask.BackingWelderId = WeldTask.BackingWelderId;
newWeldTask.JointAttribute = WeldTask.JointAttribute;
newWeldTask.Tabler = WeldTask.Tabler;
newWeldTask.TableDate = WeldTask.TableDate;
newWeldTask.WeldingMode = WeldTask.WeldingMode;
newWeldTask.IsSaved = WeldTask.IsSaved;
newWeldTask.SerialNumber = WeldTask.SerialNumber;
newWeldTask.PipeLineSortIndex = WeldTask.PipeLineSortIndex;
newWeldTask.TeamGroupId = WeldTask.TeamGroupId;
db.SubmitChanges();
}
}
public static void UpdateCanWelderTask(string weldTaskId, string canWelderId, string canWelderCode)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_WeldTask newWeldTask = db.HJGL_WeldTask.FirstOrDefault(e => e.WeldTaskId == weldTaskId);
if (newWeldTask != null)
{
newWeldTask.CanWelderId = canWelderId;
newWeldTask.CanWelderCode = canWelderCode;
db.SubmitChanges();
}
}
public static void UpdateWelderTask(string weldTaskId, string welderId)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_WeldTask newWeldTask = db.HJGL_WeldTask.FirstOrDefault(e => e.WeldTaskId == weldTaskId);
if (newWeldTask != null)
{
newWeldTask.CoverWelderId = welderId;
newWeldTask.BackingWelderId = welderId;
db.SubmitChanges();
}
}
/// <summary>
/// 查找后返回集合增加到列表集团中
/// </summary>
/// <param name="hdItemsString"></param>
/// <returns></returns>
public static List<Model.SpWeldingDailyItem> GetWeldTaskListAddItem(string hdString)
{
List<Model.SpWeldingDailyItem> returnViewMatch = new List<Model.SpWeldingDailyItem>(); //= getWeldReportItem;
if (!string.IsNullOrEmpty(hdString))
{
List<string> totallist = Funs.GetStrListByStr(hdString, '@');
foreach (var hdItemsString in totallist)
{
List<string> list = Funs.GetStrListByStr(hdItemsString, '#');
if (list.Count() == 4)
{
string CoverWelderCode = string.Empty; //盖面焊工号
string BackingWelderCode = string.Empty; //打底焊工号
string weldingLocationCode = string.Empty;
string weldingLocationId = list[0];
var loc = BLL.Base_WeldingLocationServie.GetWeldingLocationById(weldingLocationId);
if (loc != null)
{
weldingLocationCode = loc.WeldingLocationCode;
}
string jointAttribute = list[1];
string WeldingMode = list[2];
string weldlineIdLists = list[3];
List<string> weldlineIds = Funs.GetStrListByStr(weldlineIdLists, '|');
foreach (var weldlineItem in weldlineIds)
{
var jot = Funs.DB.View_HJGL_WeldJoint.FirstOrDefault(e => e.WeldJointId == weldlineItem);
if (jot != null)
{
Model.SpWeldingDailyItem newWeldReportItem = new Model.SpWeldingDailyItem();
newWeldReportItem.WeldTaskId = SQLHelper.GetNewID();
newWeldReportItem.WeldJointId = jot.WeldJointId;
newWeldReportItem.WeldJointCode = jot.WeldJointCode;
newWeldReportItem.PipelineCode = jot.PipelineCode;
newWeldReportItem.WeldTypeCode = jot.WeldTypeCode;
newWeldReportItem.JointArea = jot.JointArea;
newWeldReportItem.WeldingLocationId = weldingLocationId;
newWeldReportItem.WeldingLocationCode = weldingLocationCode;
newWeldReportItem.JointAttribute = jointAttribute;
newWeldReportItem.Size = jot.Size;
newWeldReportItem.Dia = jot.Dia;
newWeldReportItem.Thickness = jot.Thickness;
newWeldReportItem.WeldingMethodCode = jot.WeldingMethodCode;
newWeldReportItem.WeldingMode = WeldingMode;
newWeldReportItem.TaskDate = DateTime.Now.AddDays(1);
newWeldReportItem.IsWelding = jot.IsWelding;
// 如存在任务单,默认还是原任务单焊工
if (!string.IsNullOrEmpty(jot.WeldingDailyId))
{
newWeldReportItem.CoverWelderId = jot.CoverWelderId;
newWeldReportItem.BackingWelderId = jot.BackingWelderId;
var welderCover = SitePerson_PersonService.GetSitePersonById(jot.CoverWelderId);
if (welderCover != null)
{
newWeldReportItem.CoverWelderCode = welderCover.WelderCode;
}
var welderBacking = SitePerson_PersonService.GetSitePersonById(jot.BackingWelderId);
if (welderBacking != null)
{
newWeldReportItem.BackingWelderCode = welderBacking.WelderCode;
}
newWeldReportItem.JointAttribute = jot.JointAttribute;
newWeldReportItem.WeldingLocationId = jot.WeldingLocationId;
var location = BLL.Base_WeldingLocationServie.GetWeldingLocationById(jot.WeldingLocationId);
if (location != null)
{
newWeldReportItem.WeldingLocationCode = location.WeldingLocationCode;
}
}
returnViewMatch.Add(newWeldReportItem);
}
}
}
}
}
return returnViewMatch;
}
//public static List<Model.SpWeldingDailyItem> GetWeldingTaskList(string ProjectId, string UnitWorkId,DateTime taskDate) {
// List<Model.SpWeldingDailyItem> returnViewMatch = new List<Model.SpWeldingDailyItem>();
// var GetWeldingTask = (from x in Funs.DB.View_HJGL_WeldingTask
// where x.ProjectId == ProjectId && x.UnitWorkId == UnitWorkId
// && x.TaskDate.Value.Date == taskDate.Date
// select x).ToList();
// foreach (var item in GetWeldingTask)
// {
// Model.SpWeldingDailyItem newWeldReportItem = new Model.SpWeldingDailyItem();
// newWeldReportItem.WeldTaskId = item.WeldTaskId;
// newWeldReportItem.WeldJointId = item.WeldJointId;
// newWeldReportItem.WeldJointCode = item.WeldJointCode;
// newWeldReportItem.PipelineCode = item.PipelineCode;
// newWeldReportItem.WeldTypeCode = item.WeldTypeCode;
// newWeldReportItem.JointAttribute = item.JointAttribute;
// newWeldReportItem.CanWelderId = item.CanWelderId;
// newWeldReportItem.CanWelderCode = item.CanWelderCode;
// newWeldReportItem.CoverWelderId = item.CoverWelderId;
// newWeldReportItem.BackingWelderId = item.BackingWelderId;
// newWeldReportItem.BackingWelderCode = item.BackingWelderCode;
// newWeldReportItem.CoverWelderCode = item.CoverWelderCode;
// newWeldReportItem.Size = item.Size;
// newWeldReportItem.Dia = item.Dia;
// newWeldReportItem.Thickness = item.Thickness;
// newWeldReportItem.WeldingMethodCode = item.WeldingMethodCode;
// newWeldReportItem.WeldingMode = item.WeldingMode;
// newWeldReportItem.IsWelding = item.IsWelding;
// newWeldReportItem.TaskDate =Convert.ToDateTime(item.TaskDate);
// returnViewMatch.Add(newWeldReportItem);
// }
// return returnViewMatch;
//}
/// <summary>
/// 根据Id删除一个焊接任务单明细信息
/// </summary>
/// <param name="WeldingDailyId"></param>
public static void DeleteWeldingTask(string WeldTaskId)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_WeldTask delWeldTask = db.HJGL_WeldTask.FirstOrDefault(e => e.WeldTaskId == WeldTaskId);
if (delWeldTask != null)
{
db.HJGL_WeldTask.DeleteOnSubmit(delWeldTask);
db.SubmitChanges();
}
}
}
}