318 lines
12 KiB
C#
318 lines
12 KiB
C#
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
|
||
|
||
}
|
||
}
|