using Model; using System.Collections.Generic; using System.Linq; namespace BLL { public static class PipelineMatService { /// ///获取管线材料信息 /// /// public static Model.HJGL_PipeLineMat GetPipeLineMat(string pipelineMatId) { return Funs.DB.HJGL_PipeLineMat.FirstOrDefault(e => e.PipeLineMatId == pipelineMatId); } public static List GetPipeLineMatsByPipelineId(string pipelineId) { return Funs.DB.HJGL_PipeLineMat.Where(e => e.PipelineId == pipelineId).ToList(); } /// /// 增加管线材料 /// /// public static void AddPipeLineMat(Model.HJGL_PipeLineMat pipelineMat) { Model.SGGLDB db = Funs.DB; Model.HJGL_PipeLineMat newPipelineMat = new HJGL_PipeLineMat { PipeLineMatId = pipelineMat.PipeLineMatId, MaterialCode = pipelineMat.MaterialCode, MaterialCode2 = pipelineMat.MaterialCode2, WeldJointId = pipelineMat.WeldJointId, PipelineId = pipelineMat.PipelineId, Number = pipelineMat.Number, PrefabricatedComponents = pipelineMat.PrefabricatedComponents, }; db.HJGL_PipeLineMat.InsertOnSubmit(newPipelineMat); db.SubmitChanges(); } /// /// 修改管线材料 /// /// public static void UpdatePipeLineMat(Model.HJGL_PipeLineMat pipelineMat) { Model.SGGLDB db = Funs.DB; Model.HJGL_PipeLineMat newPipelineMat = db.HJGL_PipeLineMat.FirstOrDefault(e => e.PipeLineMatId == pipelineMat.PipeLineMatId); 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(); } } /// /// 维护管线材料导入编码,只更新材料编码字段,避免影响材料主编码和焊口关联。 /// /// 管线材料ID /// 材料编码 public static void UpdateMaterialCode2(string pipelineMatId, string materialCode) { Model.SGGLDB db = Funs.DB; Model.HJGL_PipeLineMat pipeLineMat = db.HJGL_PipeLineMat.FirstOrDefault(e => e.PipeLineMatId == pipelineMatId); if (pipeLineMat != null) { pipeLineMat.MaterialCode2 = materialCode; db.SubmitChanges(); } } /// /// 根据材料匹配结果反写材料主编码 /// /// 匹配成功的管线材料 /// 反写数量 public static int UpdateMaterialCodeByMatchOutputs(IEnumerable 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; } /// /// 按管线材料ID清除已反写的材料主编码,保留导入材料编码。 /// /// 管线材料ID列表。 /// 清除数量。 public static int ClearMaterialCodeByPipeLineMatIds(IEnumerable pipeLineMatIds) { var idList = pipeLineMatIds == null ? new List() : pipeLineMatIds.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList(); if (!idList.Any()) { return 0; } Model.SGGLDB db = Funs.DB; int count = 0; var pipeLineMats = db.HJGL_PipeLineMat .Where(e => idList.Contains(e.PipeLineMatId) && e.MaterialCode != null && e.MaterialCode != "") .ToList(); foreach (var item in pipeLineMats) { item.MaterialCode = null; count++; } if (count > 0) { db.SubmitChanges(); } return count; } /// /// 根据unitworkid删除焊口 /// /// public static void DeletePipeLineMatByUnitWorkId(string unitworkId) { var oldPipeline = BLL.PipelineService.GetPipelinesByUnitWordId(unitworkId); if (oldPipeline != null) { foreach (var pipeline in oldPipeline) { HJGL_PipelineComponentService.DeletePipelineComponentBypipelineId(pipeline.PipelineId);//删除原有管线对应组件 DeletePipeLineMatBypipelineId(pipeline.PipelineId); //删除原有管线对应材料 } } } /// /// 根据主键删除管线材料 /// /// public static void DeletePipeLineMat(string pipelineMatId) { Model.SGGLDB db = Funs.DB; Model.HJGL_PipeLineMat delPipelineMat = db.HJGL_PipeLineMat.FirstOrDefault(e => e.PipeLineMatId == pipelineMatId); HJGL_PipelineComponentService.DeletePipelineComponentByMatId(pipelineMatId); if (delPipelineMat != null) { db.HJGL_PipeLineMat.DeleteOnSubmit(delPipelineMat); db.SubmitChanges(); } } public static void DeletePipeLineMatBypipelineId(string pipelineId) { Model.SGGLDB db = Funs.DB; var delPipelineMat = db.HJGL_PipeLineMat.Where(e => e.PipelineId == pipelineId); if (delPipelineMat != null) { db.HJGL_PipeLineMat.DeleteAllOnSubmit(delPipelineMat); db.SubmitChanges(); } } } }