using System; using System.Collections.Generic; using System.Linq; namespace BLL { public static class WeldTaskService { /// ///获取焊接任务单信息 /// /// public static Model.HJGL_WeldTask GetWeldTaskById(string WeldTaskId) { return Funs.DB.HJGL_WeldTask.FirstOrDefault(e => e.WeldTaskId == WeldTaskId); } /// ///根据焊口id获取焊接任务单信息 /// /// public static Model.HJGL_WeldTask GetWeldTaskByWeldJointId(string weldJointId) { Model.SGGLDB db = Funs.DB; return db.HJGL_WeldTask.FirstOrDefault(e => e.WeldJointId == weldJointId); } /// ///获取焊接任务单编号 /// /// 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 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(); } /// /// 按项目、班组查询逻辑任务单;同一TaskCode下的多条焊口记录合并为一张任务单。 /// public static List GetTaskListByTeamGroup(string projectId, string teamGroupId, string unitWorkId) { if (string.IsNullOrWhiteSpace(projectId)) { return new List(); } 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); } /// /// 增加焊接任务单信息 /// /// 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(); } /// /// 修改焊接任务单信息 /// /// 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(); } } /// /// 查找后返回集合增加到列表集团中 /// /// /// public static List GetWeldTaskListAddItem(string hdString) { List returnViewMatch = new List(); //= getWeldReportItem; if (!string.IsNullOrEmpty(hdString)) { List totallist = Funs.GetStrListByStr(hdString, '@'); foreach (var hdItemsString in totallist) { List 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 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 GetWeldingTaskList(string ProjectId, string UnitWorkId,DateTime taskDate) { // List returnViewMatch = new List(); // 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; //} /// /// 根据Id删除一个焊接任务单明细信息 /// /// 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(); } } } }