Basf_TCC7/HJGL/BLL/WelderManage/WelderQualifiedService.cs

318 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BLL
{
public class WelderQualifiedService
{
/// <summary>
/// 根据人员id和合格项目代号判断是否在明细中
/// </summary>
/// <param name="year"></param>
/// <param name="unitid"></param>
/// <returns></returns>
public static bool IsInQualifiedProject(string welderId, string qualifiedProjectCode)
{
Model.HJGLDB db = Funs.DB;
bool isIn = false;
var welderItem = db.Welder_WelderQualify.FirstOrDefault(x => x.WelderId == welderId && x.QualifiedProjectCode == qualifiedProjectCode);
if (welderItem != null)
{
isIn = true;
}
return isIn;
}
/// <summary>
/// 根据主键获取合格项目明细
/// </summary>
/// <param name="EquipmentQualityAuditDetailId"></param>
/// <returns></returns>
public static Model.Welder_WelderQualify GetWelderQualifiedProjectById(string welderQualifiedProjectId)
{
return Funs.DB.Welder_WelderQualify.FirstOrDefault(e => e.WelderQualifiedProjectId == welderQualifiedProjectId);
}
/// <summary>
/// 人员合格项目明细表增加
/// </summary>
/// <param name="unitShortList"></param>
public static void AddWelderQualifiedProject(Model.Welder_WelderQualify item)
{
Model.HJGLDB db = Funs.DB;
Model.Welder_WelderQualify newWelderQualifiedProject = new Model.Welder_WelderQualify();
newWelderQualifiedProject.WelderQualifiedProjectId = item.WelderQualifiedProjectId;
newWelderQualifiedProject.WelderId = item.WelderId;
newWelderQualifiedProject.QualifiedProjectCode = item.QualifiedProjectCode;
newWelderQualifiedProject.LimitDate = item.LimitDate;
newWelderQualifiedProject.CertificateNo = item.CertificateNo;
newWelderQualifiedProject.CheckDate = item.CheckDate;
newWelderQualifiedProject.WeldType = item.WeldType;
newWelderQualifiedProject.ExamProject = item.ExamProject;
newWelderQualifiedProject.IsPass = item.IsPass;
newWelderQualifiedProject.Remark = item.Remark;
Funs.DB.Welder_WelderQualify.InsertOnSubmit(newWelderQualifiedProject);
Funs.DB.SubmitChanges();
}
/// <summary>
/// 人员合格项目明细表修改
/// </summary>
/// <param name="teamGroup"></param>
public static void UpdateWelderQualifiedProject(Model.Welder_WelderQualify welderQualifiedProject)
{
Model.HJGLDB db = Funs.DB;
Model.Welder_WelderQualify newWelderQualifiedProject = db.Welder_WelderQualify.FirstOrDefault(e => e.WelderQualifiedProjectId == welderQualifiedProject.WelderQualifiedProjectId);
if (newWelderQualifiedProject != null)
{
newWelderQualifiedProject.QualifiedProjectCode = welderQualifiedProject.QualifiedProjectCode;
newWelderQualifiedProject.WelderId = welderQualifiedProject.WelderId;
newWelderQualifiedProject.CertificateNo = welderQualifiedProject.CertificateNo;
newWelderQualifiedProject.WeldingMethodId = welderQualifiedProject.WeldingMethodId;
newWelderQualifiedProject.MaterialType = welderQualifiedProject.MaterialType;
newWelderQualifiedProject.WeldingLocationId = welderQualifiedProject.WeldingLocationId;
newWelderQualifiedProject.ThicknessMax = welderQualifiedProject.ThicknessMax;
newWelderQualifiedProject.SizesMin = welderQualifiedProject.SizesMin;
newWelderQualifiedProject.LimitDate = welderQualifiedProject.LimitDate;
newWelderQualifiedProject.MaterialTypeName = welderQualifiedProject.MaterialTypeName;
newWelderQualifiedProject.WeldType = welderQualifiedProject.WeldType;
newWelderQualifiedProject.ExamProject = welderQualifiedProject.ExamProject;
newWelderQualifiedProject.IsPass = welderQualifiedProject.IsPass;
newWelderQualifiedProject.Remark = welderQualifiedProject.Remark;
db.SubmitChanges();
}
}
/// <summary>
/// 根据合格项目明细Id删除焊工对应合格项目明细
/// </summary>
/// <param name="shortListId"></param>
public static void DeleteWelderQualifiedProjectByWelderQualifiedProjectId(string welderQualifiedProjectId)
{
Model.HJGLDB db = Funs.DB;
var q = (from x in db.Welder_WelderQualify where x.WelderQualifiedProjectId == welderQualifiedProjectId select x).FirstOrDefault();
if (q != null)
{
db.Welder_WelderQualify.DeleteOnSubmit(q);
db.SubmitChanges();
}
}
/// <summary>
/// 根据焊工Id删除所有对应焊工合格项目明细
/// </summary>
/// <param name="welderId"></param>
public static void DeleteWelderQualifiedProjectByWED_ID(string welderId)
{
Model.HJGLDB db = Funs.DB;
var q = (from x in db.Welder_WelderQualify where x.WelderId == welderId select x).ToList();
if (q.Count() > 0)
{
db.Welder_WelderQualify.DeleteAllOnSubmit(q);
db.SubmitChanges();
}
}
#region
public static bool IsOK(List<Model.Welder_WelderQualify> welderQualifys, string wmeCode, string location, string weldTypeGroup, string ste, decimal? dia, decimal? sch)
{
bool isok = false;
foreach (var welderQualify in welderQualifys)
{
int okNum = 0;
if (!string.IsNullOrEmpty(wmeCode)) //焊接方法
{
if (wmeCode.Contains(welderQualify.WeldingMethodId))
{
okNum++;
}
}
else
{
okNum++;
}
if (welderQualify.WeldingLocationId == "ALL") //焊接位置
{
okNum++;
}
else
{
if (!string.IsNullOrEmpty(location))
{
if (welderQualify.WeldingLocationId.Contains(location))
{
okNum++;
}
}
else
{
okNum++;
}
}
if (!string.IsNullOrEmpty(weldTypeGroup))
{
if (welderQualify.WeldType.Contains(weldTypeGroup))
{
okNum++;
}
}
else
{
okNum++;
}
var steel = BLL.Base_MaterialService.GetMaterialByMaterialId(ste);
if (steel != null) //钢材类型
{
if (welderQualify.MaterialType.Contains(steel.MaterialType ?? ""))
{
okNum++;
}
}
else
{
okNum++;
}
if (weldTypeGroup != "2") // 承插焊
{
if (welderQualify.SizesMin == 0) // 0表示不限
{
okNum++;
}
else //最小寸径
{
if (dia != null)
{
if (dia >= welderQualify.SizesMin)
{
okNum++;
}
}
else
{
okNum++;
}
}
if (welderQualify.ThicknessMax == 0) // 0表示不限
{
okNum++;
}
else
{
if (sch != null) //最大壁厚
{
if (sch <= welderQualify.ThicknessMax)
{
okNum++;
}
}
else
{
okNum++;
}
}
}
else // 当为角焊缝时,管径和壁厚不限制
{
okNum++;
okNum++;
}
if (okNum == 6) //全部条件符合
{
isok = true;
break;
}
}
return isok;
}
/// <summary>
/// 两种焊接方法的资质判断
/// </summary>
/// <param name="floorWelderQualifys"></param>
/// <param name="cellWelderQualifys"></param>
/// <param name="wmeCode1"></param>
/// <param name="wmeCode2"></param>
/// <param name="location"></param>
/// <param name="ste"></param>
/// <param name="dia"></param>
/// <param name="sch"></param>
/// <returns></returns>
public static bool TwoWmeIsOK(List<Model.Welder_WelderQualify> floorWelderQualifys, List<Model.Welder_WelderQualify> cellWelderQualifys, string wmeCode1, string wmeCode2, string location, string weldTypeGroup, string ste, decimal? dia, decimal? sch)
{
bool isok = false;
decimal? fThicknessMax = 0;
decimal? cThicknessMax = 0;
var steel = BLL.Base_MaterialService.GetMaterialByMaterialId(ste);
var floorQ = from x in floorWelderQualifys
where wmeCode1.Contains(x.WeldingMethodId)
&& (x.WeldingLocationId == "ALL" || (location == null || location == "" || x.WeldingLocationId.Contains(location)))
&& (steel == null || x.MaterialType.Contains(steel.MaterialType ?? ""))
&& (weldTypeGroup == null || x.WeldType.Contains(weldTypeGroup))
// && (dia == null || x.SizesMin<=dia)
select x;
var cellQ = from x in cellWelderQualifys
where wmeCode2.Contains(x.WeldingMethodId)
&& (x.WeldingLocationId == "ALL" || (location == null || location == "" || x.WeldingLocationId.Contains(location)))
&& (steel == null || x.MaterialType.Contains(steel.MaterialType ?? ""))
&& (weldTypeGroup == null || x.WeldType.Contains(weldTypeGroup))
// && (dia == null || x.SizesMin <= dia)
select x;
if (floorQ.Count() > 0 && cellQ.Count() > 0)
{
if (weldTypeGroup != "2") // 当为角焊缝时,管径和壁厚不限制
{
var floorDiaQ = floorQ.Where(x => x.SizesMin <= dia);
var cellDiaQ = cellQ.Where(x => x.SizesMin <= dia);
if (floorDiaQ.Count() > 0 && cellDiaQ.Count() > 0)
{
var fThick = floorDiaQ.Where(x => x.ThicknessMax == 0);
var cThick = cellDiaQ.Where(x => x.ThicknessMax == 0);
// 只要有一个不限为0就通过
if (fThick.Count() > 0 || cThick.Count() > 0)
{
isok = true;
}
else
{
fThicknessMax = floorQ.Max(x => x.ThicknessMax);
cThicknessMax = cellQ.Max(x => x.ThicknessMax);
if ((fThicknessMax + cThicknessMax) >= sch)
{
isok = true;
}
}
}
}
else
{
isok = true;
}
}
return isok;
}
#endregion
}
}