feat(hjgl): 支持按焊口匹配和回写管线材料

管线材料导入需要关联到具体焊口,并允许按材料编码匹配库存后回写
材料主编码。新增 HJGL_PipeLineMat 的焊口和材料编码字段,材料匹配、
任务生成和出库关系同步按焊口维度处理,避免仅按组件匹配导致材料
范围不准确。
This commit is contained in:
2026-06-11 10:39:58 +08:00
parent c48972cc60
commit 201443e437
15 changed files with 488 additions and 206 deletions
@@ -31,6 +31,8 @@ namespace BLL
{
PipeLineMatId = pipelineMat.PipeLineMatId,
MaterialCode = pipelineMat.MaterialCode,
MaterialCode2 = pipelineMat.MaterialCode2,
WeldJointId = pipelineMat.WeldJointId,
PipelineId = pipelineMat.PipelineId,
Number = pipelineMat.Number,
PrefabricatedComponents = pipelineMat.PrefabricatedComponents,
@@ -50,12 +52,48 @@ namespace BLL
if (newPipelineMat != null)
{
newPipelineMat.MaterialCode = pipelineMat.MaterialCode;
newPipelineMat.MaterialCode2 = pipelineMat.MaterialCode2;
newPipelineMat.WeldJointId = pipelineMat.WeldJointId;
newPipelineMat.PipelineId = pipelineMat.PipelineId;
newPipelineMat.Number = pipelineMat.Number;
newPipelineMat.PrefabricatedComponents = pipelineMat.PrefabricatedComponents;
db.SubmitChanges();
}
}
/// <summary>
/// 根据材料匹配结果反写材料主编码
/// </summary>
/// <param name="matchedMaterials">匹配成功的管线材料</param>
/// <returns>反写数量</returns>
public static int UpdateMaterialCodeByMatchOutputs(IEnumerable<Model.Tw_PipeMatMatchOutput> matchedMaterials)
{
Model.SGGLDB db = Funs.DB;
int count = 0;
foreach (var item in matchedMaterials)
{
if (item == null || string.IsNullOrEmpty(item.PipeLineMatId) || string.IsNullOrEmpty(item.MatchMaterialCode))
{
continue;
}
var pipeLineMat = db.HJGL_PipeLineMat.FirstOrDefault(e => e.PipeLineMatId == item.PipeLineMatId);
if (pipeLineMat == null)
{
continue;
}
pipeLineMat.MaterialCode = item.MatchMaterialCode;
count++;
}
if (count > 0)
{
db.SubmitChanges();
}
return count;
}
/// <summary>
/// 根据unitworkid删除焊口
/// </summary>