using System; using System.Collections.Generic; using System.Linq; 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); //大于等于500的焊口全部点口 var batchItems500Up = from x in db.HJGL_Batch_PointBatchItem join y in db.HJGL_WeldJoint on x.WeldJointId equals y.WeldJointId where y.Dia >= 500 && x.PointBatchId == pointBatchId select x; foreach (var item in batchItems500Up) { PointBatchDetailService.UpdatePointBatchDetail(item.PointBatchItemId, "1", System.DateTime.Now); } //小于500的焊口按比例及规则点口 var batchItems500Down = from x in db.HJGL_Batch_PointBatchItem join y in db.HJGL_WeldJoint on x.WeldJointId equals y.WeldJointId where (y.Dia < 500 || y.Dia == null) && x.PointBatchId == pointBatchId select x; if (batch.DetectionRateId != null && batchItems500Down.Count() > 0) { var rate = Base_DetectionRateService.GetDetectionRateByDetectionRateId(batch.DetectionRateId); // 批里要检测的数量 pointNum = Convert.ToInt32(Math.Ceiling((batchItems500Down.Count() * rate.DetectionRateValue.Value) * 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 == "安装口" && (y.Dia < 500 || y.Dia == null) && 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 == "预制口" && (y.Dia < 500 || y.Dia == null) && 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); } } } }