using System; using System.Collections.Generic; using System.Linq; namespace BLL { /// /// 小程序焊前检查接口服务 /// public static class APIPreWeldInspectionService { /// /// 根据焊口ID获取焊前基础信息 /// public static Model.PreWeldJointItem GetPreWeldJointByWeldJointId(string weldJointId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getweldJointPaintId = (from x in db.HJGL_WeldJoint join y in db.HJGL_Pipeline on x.PipelineId equals y.PipelineId where x.WeldJointId == weldJointId select y.PaintId).FirstOrDefault(); var getweldJointMaterialCode = (from x in db.HJGL_PipeLineMat where x.WeldJointId == weldJointId select x.MaterialCode).FirstOrDefault(); var query = from x in db.HJGL_WeldJoint join p in db.Base_Project on x.ProjectId equals p.ProjectId into projects from p in projects.DefaultIfEmpty() join pl in db.HJGL_Pipeline on x.PipelineId equals pl.PipelineId into pipelines from pl in pipelines.DefaultIfEmpty() join paint in db.Tw_PaintCodeDict on pl.PaintId equals paint.Id into paints from paint in paints.DefaultIfEmpty() where x.WeldJointId == weldJointId select new Model.PreWeldJointItem { WeldJointId = x.WeldJointId, WeldJointCode = x.WeldJointCode, PipelineId = x.PipelineId, PipelineCode = x.PipelineCode, PaintId= pl.PaintId, PaintCode = paint == null ? string.Empty : paint.PaintCode, ProjectId = x.ProjectId, ProjectName = p == null ? string.Empty : p.ProjectName, preWeldMaterialItems = (from m in db.HJGL_PipeLineMat join lib in db.HJGL_MaterialCodeLib on m.MaterialCode equals lib.MaterialCode into libs from lib in libs.DefaultIfEmpty() where m.WeldJointId == weldJointId select new Model.PreWeldMaterialItem { MaterialCode = lib.MaterialCode, MaterialName = lib.MaterialName, MaterialSpec = lib.MaterialSpec, MaterialMade = lib.MaterialMade, MaterialDef = lib.MaterialDef, MaterialUnit = lib.MaterialUnit, HeatNo = lib.HeatNo, BatchNo = lib.BatchNo, }).ToList() }; var item = query.FirstOrDefault(); if (item != null) { SetInspectionAttachUrl(db, item); } return item; } } /// /// 获取焊口下料记录列表 /// public static List GetCuttingChecksByWeldJointId(string weldJointId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var data = (from c in db.HJGL_PreWeldCuttingCheck join w in db.HJGL_WeldJoint on c.WeldJointId equals w.WeldJointId join p in db.Person_Persons on c.CheckPerson equals p.PersonId into persons from p in persons.DefaultIfEmpty() where c.WeldJointId == weldJointId orderby c.CheckTime descending select new Model.PreWeldCuttingCheckItem { CuttingCheckId = c.CuttingCheckId, ProjectId = c.ProjectId, WeldJointId = c.WeldJointId, PipelineCode = w.PipelineCode, WeldJointCode = w.WeldJointCode, CuttingLength = c.CuttingLength, GrooveForm = c.GrooveForm, GrooveAngle = c.GrooveAngle, IsMaterialCodeBatchNoAccurate = c.IsMaterialCodeBatchNoAccurate, IsMaterialQuantityAccurate = c.IsMaterialQuantityAccurate, IsQualified = c.IsQualified, CheckPerson = c.CheckPerson, CheckPersonName = p == null ? string.Empty : p.PersonName, CheckTime = c.CheckTime, CreateUser = c.CreateUser, CreateTime = c.CreateTime, AttachUrl1 = null, CheckResult = c.CheckResult, UnqualifiedReason = c.UnqualifiedReason, RectifyRequirement = c.RectifyRequirement, Remark = c.Remark }).ToList(); foreach (var item in data) { item.AttachUrl1 = GetAttachUrl(db, Const.HJGL_PreWeldCuttingCheckMenuId, item.CuttingCheckId); } return data; } } /// /// 获取焊口组对记录列表 /// public static List GetFitupChecksByWeldJointId(string weldJointId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var data = (from f in db.HJGL_PreWeldFitupCheck join w in db.HJGL_WeldJoint on f.WeldJointId equals w.WeldJointId join g in db.Base_GrooveType on f.GrooveTypeId equals g.GrooveTypeId into grooveTypes from g in grooveTypes.DefaultIfEmpty() join p in db.Person_Persons on f.CheckPerson equals p.PersonId into persons from p in persons.DefaultIfEmpty() where f.WeldJointId == weldJointId orderby f.CheckTime descending select new Model.PreWeldFitupCheckItem { FitupCheckId = f.FitupCheckId, ProjectId = f.ProjectId, WeldJointId = f.WeldJointId, PipelineCode = w.PipelineCode, WeldJointCode = w.WeldJointCode, GrooveTypeId = f.GrooveTypeId, GrooveTypeCode = g == null ? string.Empty : g.GrooveTypeCode, GrooveTypeName = g == null ? string.Empty : g.GrooveTypeName, GrooveProcessType = f.GrooveProcessType, GrooveAngle = f.GrooveAngle, FitupGap = f.FitupGap, Misalignment = f.Misalignment, WeldReinforcement = f.WeldReinforcement, WeldHeight = f.WeldHeight, WeldWidth = f.WeldWidth, SurfaceDefect = f.SurfaceDefect, CheckPerson = f.CheckPerson, CheckPersonName = p == null ? string.Empty : p.PersonName, CheckTime = f.CheckTime, CreateUser = f.CreateUser, CreateTime = f.CreateTime, AttachUrl1 = null, CheckResult = f.CheckResult, UnqualifiedReason = f.UnqualifiedReason, RectifyRequirement = f.RectifyRequirement, Remark = f.Remark }).ToList(); foreach (var item in data) { item.AttachUrl1 = GetAttachUrl(db, Const.HJGL_PreWeldFitupCheckMenuId, item.FitupCheckId); } return data; } } /// /// 按材料编码获取防腐检查记录 /// public static List GetAntiCorrosionChecksByMaterialCode(string materialCode, string projectId) { return PreWeldInspectionService.GetAntiCorrosionChecksByMaterialCode(materialCode, projectId); } /// /// 按焊口获取防腐检查记录列表 /// /// /// public static List GetAntiCorrosionChecksByWeldJointId(string weldJointId) { return PreWeldInspectionService.GetAntiCorrosionChecksByWeldJointId(weldJointId); } /// /// 保存下料检查 /// public static string SaveCuttingCheck(Model.PreWeldCuttingCheckInput item) { return PreWeldInspectionService.SaveCuttingCheck(item); } /// /// 保存组对检查 /// public static string SaveFitupCheck(Model.PreWeldFitupCheckInput item) { return PreWeldInspectionService.SaveFitupCheck(item); } /// /// 保存防腐检查 /// public static string SaveAntiCorrosionCheck(Model.AntiCorrosionCheckRecordInput item) { return PreWeldInspectionService.SaveAntiCorrosionCheck(item); } /// /// 获取防腐代码字典 /// public static List GetPaintCodeList() { return TwAntiCorrosionTrustService.GetPaintCodeList(); } /// /// 兼容旧接口:按焊口获取组对记录最新一条 /// public static Model.HJGL_PreWeldFitupCheck GetFitupCheckByWeldJointId(string weldJointId) { return PreWeldInspectionService.GetFitupCheckByWeldJointId(weldJointId); } /// /// 回写下料、组对附件地址 /// private static void SetInspectionAttachUrl(Model.SGGLDB db, Model.PreWeldJointItem item) { var cuttingCheckId = db.HJGL_PreWeldCuttingCheck .Where(x => x.WeldJointId == item.WeldJointId) .OrderByDescending(x => x.CheckTime) .Select(x => x.CuttingCheckId) .FirstOrDefault(); if (!string.IsNullOrEmpty(cuttingCheckId)) { item.CuttingAttachUrl1 = GetAttachUrl(db, Const.HJGL_PreWeldCuttingCheckMenuId, cuttingCheckId); } var fitupCheckId = db.HJGL_PreWeldFitupCheck .Where(x => x.WeldJointId == item.WeldJointId) .OrderByDescending(x => x.CheckTime) .Select(x => x.FitupCheckId) .FirstOrDefault(); if (!string.IsNullOrEmpty(fitupCheckId)) { item.FitupAttachUrl1 = GetAttachUrl(db, Const.HJGL_PreWeldFitupCheckMenuId, fitupCheckId); } } /// /// 根据菜单和业务ID获取附件地址 /// private static string GetAttachUrl(Model.SGGLDB db, string menuId, string toKeyId) { var attachUrl = db.AttachFile .Where(x => x.MenuId == menuId && x.ToKeyId == toKeyId) .Select(x => x.AttachUrl) .FirstOrDefault(); return string.IsNullOrEmpty(attachUrl) ? attachUrl : attachUrl.Replace('\\', '/'); } } }