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();
}
}
}
}