Files
SGGL_SHJ/SGGL/BLL/API/HJGL/APIPreWeldInspectionService.cs
T
lpf bb6615ebb0 feat(hjgl): 完善焊前检查和防腐检查流程
焊前检查需要同时覆盖下料、组对和防腐检查,并支持移动端查询与保存。
扩展焊前检查模型、服务和页面字段,补充检查结果、不合格原因、整改要求、
附件和防腐检查记录,便于按焊口和材料追溯检查过程。
2026-07-07 10:40:21 +08:00

263 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
/// <summary>
/// 小程序焊前检查接口服务
/// </summary>
public static class APIPreWeldInspectionService
{
/// <summary>
/// 根据焊口ID获取焊前基础信息
/// </summary>
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;
}
}
/// <summary>
/// 获取焊口下料记录列表
/// </summary>
public static List<Model.PreWeldCuttingCheckItem> 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;
}
}
/// <summary>
/// 获取焊口组对记录列表
/// </summary>
public static List<Model.PreWeldFitupCheckItem> 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;
}
}
/// <summary>
/// 按材料编码获取防腐检查记录
/// </summary>
public static List<Model.AntiCorrosionCheckRecordItem> GetAntiCorrosionChecksByMaterialCode(string materialCode, string projectId)
{
return PreWeldInspectionService.GetAntiCorrosionChecksByMaterialCode(materialCode, projectId);
}
/// <summary>
/// 按焊口获取防腐检查记录列表
/// </summary>
/// <param name="weldJointId"></param>
/// <returns></returns>
public static List<Model.AntiCorrosionCheckRecordItem> GetAntiCorrosionChecksByWeldJointId(string weldJointId)
{
return PreWeldInspectionService.GetAntiCorrosionChecksByWeldJointId(weldJointId);
}
/// <summary>
/// 保存下料检查
/// </summary>
public static string SaveCuttingCheck(Model.PreWeldCuttingCheckInput item)
{
return PreWeldInspectionService.SaveCuttingCheck(item);
}
/// <summary>
/// 保存组对检查
/// </summary>
public static string SaveFitupCheck(Model.PreWeldFitupCheckInput item)
{
return PreWeldInspectionService.SaveFitupCheck(item);
}
/// <summary>
/// 保存防腐检查
/// </summary>
public static string SaveAntiCorrosionCheck(Model.AntiCorrosionCheckRecordInput item)
{
return PreWeldInspectionService.SaveAntiCorrosionCheck(item);
}
/// <summary>
/// 获取防腐代码字典
/// </summary>
public static List<Model.PaintCodeDictOutput> GetPaintCodeList()
{
return TwAntiCorrosionTrustService.GetPaintCodeList();
}
/// <summary>
/// 兼容旧接口:按焊口获取组对记录最新一条
/// </summary>
public static Model.HJGL_PreWeldFitupCheck GetFitupCheckByWeldJointId(string weldJointId)
{
return PreWeldInspectionService.GetFitupCheckByWeldJointId(weldJointId);
}
/// <summary>
/// 回写下料、组对附件地址
/// </summary>
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);
}
}
/// <summary>
/// 根据菜单和业务ID获取附件地址
/// </summary>
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('\\', '/');
}
}
}