using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace BLL
{
public class PointBatchDetailService
{
///
/// 根据批明细ID获取批明细信息
///
///
///
public static Model.HJGL_Batch_PointBatchItem GetBatchDetailById(string batchDetailId)
{
return Funs.DB.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.PointBatchItemId == batchDetailId);
}
///
/// 根据批焊口ID获取批明细信息
///
///
///
public static Model.HJGL_Batch_PointBatchItem GetBatchDetailByJotId(string jotId)
{
return Funs.DB.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.WeldJointId == jotId);
}
public static List GetBatchDetailByBatchId(string batchId)
{
return Funs.DB.HJGL_Batch_PointBatchItem.Where(e => e.PointBatchId == batchId).ToList();
}
public static List GetGBatchDetailByBatchId(string batchId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
return (from x in db.HJGL_Batch_PointBatchItem
join y in db.HJGL_WeldJoint
on x.WeldJointId equals y.WeldJointId
where y.WeldJointCode.Contains("G") && x.PointBatchId == batchId
select x).ToList();
}
}
///
/// 修改
///
///
public static void UpdatePointBatchDetail(Model.HJGL_Batch_PointBatchItem batchDetail)
{
Model.HJGL_Batch_PointBatchItem newBatchDetail = Funs.DB.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.PointBatchItemId == batchDetail.PointBatchItemId);
if (newBatchDetail != null)
{
newBatchDetail.PointBatchId = batchDetail.PointBatchId;
newBatchDetail.WeldJointId = batchDetail.WeldJointId;
newBatchDetail.PointState = batchDetail.PointState;
newBatchDetail.PointDate = batchDetail.PointDate;
newBatchDetail.PointDate = batchDetail.PointDate;
newBatchDetail.RepairDate = batchDetail.RepairDate;
newBatchDetail.CutDate = batchDetail.CutDate;
newBatchDetail.CreatDate = batchDetail.CreatDate;
newBatchDetail.IsBuildTrust = batchDetail.IsBuildTrust;
newBatchDetail.IsWelderFirst = batchDetail.IsWelderFirst;
newBatchDetail.IsPipelineFirst = batchDetail.IsPipelineFirst;
newBatchDetail.Remark = batchDetail.Remark;
Funs.DB.SubmitChanges();
}
}
public static void UpdatePointBatchDetail(string pointBatchItemId, string pointState, DateTime? pointDate)
{
Model.HJGL_Batch_PointBatchItem newBatchDetail = Funs.DB.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.PointBatchItemId == pointBatchItemId);
if (newBatchDetail != null)
{
newBatchDetail.PointState = pointState;
newBatchDetail.PointDate = pointDate;
Funs.DB.SubmitChanges();
}
}
#region 点口审核
///
/// 点口审核
///
///
///
public static void PointAudit(string pointBatchItemId, bool isAudit)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_Batch_PointBatchItem newPointBatchItem = db.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.PointBatchItemId == pointBatchItemId);
if (newPointBatchItem != null)
{
newPointBatchItem.IsAudit = isAudit;
db.SubmitChanges();
}
}
#endregion
#region 首件制
///
/// 焊工首两件
///
///
///
public static void UpdateWelderFirst(string pointBatchItemId, bool? welderFirst)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_Batch_PointBatchItem newPointBatchItem = db.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.PointBatchItemId == pointBatchItemId);
newPointBatchItem.IsWelderFirst = welderFirst;
db.SubmitChanges();
}
///
/// 管线首件
///
///
///
public static void UpdatePipelineFirst(string pointBatchItemId, bool? pipelineFirst)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_Batch_PointBatchItem newPointBatchItem = db.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.PointBatchItemId == pointBatchItemId);
newPointBatchItem.IsPipelineFirst = pipelineFirst;
db.SubmitChanges();
}
#endregion
///
/// 根据批焊口ID删除批明细信息
///
///
public static void DeleteBatchDetail(string jotId)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_Batch_PointBatchItem batch = db.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.WeldJointId == jotId);
if (batch != null)
{
db.HJGL_Batch_PointBatchItem.DeleteOnSubmit(batch);
db.SubmitChanges();
}
}
///
/// 增加
///
///
public static void AddBatchDetail(Model.HJGL_Batch_PointBatchItem batchDetail)
{
Model.HJGL_Batch_PointBatchItem newBatchDetail = new Model.HJGL_Batch_PointBatchItem();
newBatchDetail.PointBatchItemId = batchDetail.PointBatchItemId;
newBatchDetail.PointBatchId = batchDetail.PointBatchId;
newBatchDetail.WeldJointId = batchDetail.WeldJointId;
newBatchDetail.PointState = batchDetail.PointState;
newBatchDetail.PointDate = batchDetail.PointDate;
newBatchDetail.PointDate = batchDetail.PointDate;
newBatchDetail.RepairDate = batchDetail.RepairDate;
newBatchDetail.CutDate = batchDetail.CutDate;
newBatchDetail.CreatDate = batchDetail.CreatDate;
newBatchDetail.IsBuildTrust = batchDetail.IsBuildTrust;
newBatchDetail.IsWelderFirst = batchDetail.IsWelderFirst;
newBatchDetail.IsPipelineFirst = batchDetail.IsPipelineFirst;
newBatchDetail.Remark = batchDetail.Remark;
Funs.DB.HJGL_Batch_PointBatchItem.InsertOnSubmit(newBatchDetail);
Funs.DB.SubmitChanges();
}
///
/// 根据主键删除明细
///
///
public static void DeleteBatchDetailById(string batchDetailId)
{
Model.SGGLDB db = Funs.DB;
Model.HJGL_Batch_PointBatchItem batch = db.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.PointBatchItemId == batchDetailId);
if (batch != null)
{
db.HJGL_Batch_PointBatchItem.DeleteOnSubmit(batch);
db.SubmitChanges();
}
}
///
/// 检验批自动点口算法
///
///
public static void AutoPoint(string pointBatchId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
int pointNum = 0;
int pointNumG = 0;
int pointNumA = 0;
var batch = PointBatchService.GetPointBatchById(pointBatchId);
var batchItemNum = PointBatchDetailService.GetBatchDetailByBatchId(pointBatchId);
if (batch.DetectionRateId != null && batchItemNum.Count() > 0)
{
var rate = Base_DetectionRateService.GetDetectionRateByDetectionRateId(batch.DetectionRateId);
// 批里要检测的数量
pointNum = Convert.ToInt32(Math.Ceiling((batchItemNum.Count() * Convert.ToDouble(rate.DetectionRateValue)) * 0.01));
}
var weldG = from x in db.HJGL_Batch_PointBatchItem
join y in db.HJGL_WeldJoint on x.WeldJointId equals y.WeldJointId
where y.JointAttribute == "固定口" && x.PointBatchId==pointBatchId
select x;
var weldA = from x in db.HJGL_Batch_PointBatchItem
join y in db.HJGL_WeldJoint on x.WeldJointId equals y.WeldJointId
where y.JointAttribute == "活动口" && x.PointBatchId == pointBatchId
select x;
if (weldG.Count() > 0)
{
// 固定口检测数量
pointNumG = Convert.ToInt32(Math.Ceiling(weldG.Count() * 0.4));
}
// 活动口要检测的数量
pointNumA = pointNum - pointNumG;
if (pointNumG > 0)
{
int[] r = Funs.GetRandomNum(pointNumG, 1, weldG.Count());
int i = 0;
foreach (var p in weldG)
{
i++;
if (r.Contains(i))
{
PointBatchDetailService.UpdatePointBatchDetail(p.PointBatchItemId, "1", System.DateTime.Now);
}
}
}
if (pointNumA > 0)
{
int[] r = Funs.GetRandomNum(pointNumA, 1, weldA.Count());
int j = 0;
foreach (var p in weldA)
{
j++;
if (r.Contains(j))
{
PointBatchDetailService.UpdatePointBatchDetail(p.PointBatchItemId, "1", System.DateTime.Now);
}
}
}
PointBatchService.UpdateBatchIsClosed(pointBatchId, DateTime.Now);
}
}
}
}