feat(hjgl): 完善图纸识别与材料管段信息管理

扩展图纸识别结果模型和保存流程,按管线及页码替换识别明细,
避免重复导入造成数据累积;同时自动补充材料编码库数据,
新增材料总览、管段长度总览及 PDF 焊口标记功能,提升识别数据
的查询、复核和后续使用效率。
This commit is contained in:
2026-07-17 14:36:32 +08:00
parent 040de31eb1
commit 7fb6b255d2
36 changed files with 2313 additions and 354 deletions
@@ -147,6 +147,60 @@
db.SubmitChanges();
}
}
public static void AddListByDraw(List<Tw_InputDataIn> list)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
// 图纸材料编码同时作为材料库主键和业务编码,不能为空且同批次只允许新增一次。
var existingMaterials = db.HJGL_MaterialCodeLib
.Select(x => new { x.MaterialCode, x.Code })
.ToList();
var materialCodes = new HashSet<string>(System.StringComparer.OrdinalIgnoreCase);
foreach (var existingMaterial in existingMaterials)
{
if (!string.IsNullOrWhiteSpace(existingMaterial.MaterialCode))
{
materialCodes.Add(existingMaterial.MaterialCode);
}
if (!string.IsNullOrWhiteSpace(existingMaterial.Code))
{
materialCodes.Add(existingMaterial.Code);
}
}
List<Model.HJGL_MaterialCodeLib> details = new List<Model.HJGL_MaterialCodeLib>();
foreach (var item in list)
{
if (item == null || string.IsNullOrWhiteSpace(item.MaterialCode))
{
continue;
}
string materialCode = item.MaterialCode.Trim();
if (!materialCodes.Add(materialCode))
{
continue;
}
Model.HJGL_MaterialCodeLib table = new Model.HJGL_MaterialCodeLib
{
MaterialCode = materialCode,
MaterialName = item.MaterialName,
MaterialSpec = item.MaterialSpec,
MaterialUnit = item.MaterialUnit,
MaterialDef = item.MaterialDef,
Code = materialCode
};
details.Add(table);
}
if (details.Count > 0)
{
db.HJGL_MaterialCodeLib.InsertAllOnSubmit(details);
db.SubmitChanges();
}
}
}
}
public class MaterialCodeLibDtoIn