using Microsoft.SqlServer.Dts.Runtime; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Windows.Media.Animation; using System.Windows; using Model; namespace BLL { public class PointBatchService { /// /// /// /// /// public static Model.HJGL_Batch_PointBatch GetPointBatchById(string pointBatchId) { return Funs.DB.HJGL_Batch_PointBatch.FirstOrDefault(e => e.PointBatchId == pointBatchId); } /// /// 修改批主表批关闭状态 /// /// public static void UpdateBatchIsClosed(string PointBatchId, DateTime endDate) { Model.HJGL_Batch_PointBatch newBatch = Funs.DB.HJGL_Batch_PointBatch.FirstOrDefault(e => e.PointBatchId == PointBatchId); if (newBatch != null) { newBatch.EndDate = endDate; Funs.DB.SubmitChanges(); } } /// /// 修改批主表批关闭状态 /// /// public static void UpdateBatchIsClosed2(string PointBatchId, DateTime endDate) { Model.HJGL_Batch_PointBatch newBatch = Funs.DB.HJGL_Batch_PointBatch.FirstOrDefault(e => e.PointBatchId == PointBatchId); if (newBatch != null) { newBatch.EndDate = endDate; newBatch.IsClosed = true; Funs.DB.SubmitChanges(); } } /// /// 添加 /// /// public static void AddPointBatch(Model.HJGL_Batch_PointBatch batch) { Model.SGGLDB db = Funs.DB; Model.HJGL_Batch_PointBatch newBatch = new Model.HJGL_Batch_PointBatch(); newBatch.PointBatchId = batch.PointBatchId; newBatch.PointBatchCode = batch.PointBatchCode; newBatch.BatchCondition = batch.BatchCondition; newBatch.ProjectId = batch.ProjectId; newBatch.UnitWorkId = batch.UnitWorkId; newBatch.UnitId = batch.UnitId; newBatch.DetectionTypeId = batch.DetectionTypeId; newBatch.DetectionRateId = batch.DetectionRateId; newBatch.PipingClassId = batch.PipingClassId; newBatch.PipelineId = batch.PipelineId; newBatch.WelderId = batch.WelderId; newBatch.StartDate = batch.StartDate; db.HJGL_Batch_PointBatch.InsertOnSubmit(newBatch); db.SubmitChanges(); } /// /// 删除 /// /// public static void DeleteBatch(string batchId) { Model.SGGLDB db = Funs.DB; Model.HJGL_Batch_PointBatch batch = db.HJGL_Batch_PointBatch.FirstOrDefault(e => e.PointBatchId == batchId); db.HJGL_Batch_PointBatch.DeleteOnSubmit(batch); db.SubmitChanges(); } /// /// 根据焊口id删除批信息 /// /// public static void DeleteBatchByWeldJointId(string weldJointId) { var newWeldJoint = BLL.WeldJointService.GetWeldJointByWeldJointId(weldJointId); if (newWeldJoint != null ) { var isTrust = from x in Funs.DB.HJGL_Batch_BatchTrustItem where x.WeldJointId == weldJointId select x; ; if (!isTrust.Any()) { var pointBatchItems = from x in Funs.DB.HJGL_Batch_PointBatchItem where x.WeldJointId == weldJointId select x; string pointBatchId = pointBatchItems.FirstOrDefault()?.PointBatchId; // 删除焊口所在批明细信息 BLL.PointBatchDetailService.DeleteBatchDetail(weldJointId); // 删除批信息 var batch = from x in Funs.DB.HJGL_Batch_PointBatchItem where x.PointBatchId == pointBatchId select x; if (!string .IsNullOrEmpty(pointBatchId) && !batch.Any()) { DeleteBatch(pointBatchId); } //BLL.Batch_NDEItemService.DeleteAllNDEInfoToWeldJoint(item.WeldJointId); } else { // errlog += "焊口【" + newWeldJoint.WeldJointCode + "】已进委托单了,不能删除。"; } } } /// /// 根据焊口id组批 /// public static string AddBatchByWeldJointId(string weldJointId, DateTime? weldingDate, string batchCondition) { string errlog = string.Empty; string[] condition = batchCondition.Split('|'); var newWeldJoint = BLL.WeldJointService.GetWeldJointByWeldJointId(weldJointId); var pipeline = BLL.PipelineService.GetPipelineByPipelineId(newWeldJoint.PipelineId); var project = BLL.ProjectService.GetProjectByProjectId(pipeline.ProjectId); var unitWork = BLL.UnitWorkService.GetUnitWorkByUnitWorkId(pipeline.UnitWorkId); var unit = BLL.UnitService.GetUnitByUnitId(pipeline.UnitId); var ndt = BLL.Base_DetectionTypeService.GetDetectionTypeByDetectionTypeId(pipeline.DetectionType); var ndtr = BLL.Base_DetectionRateService.GetDetectionRateByDetectionRateId(pipeline.DetectionRateId); if (newWeldJoint != null) { bool isPass = true; foreach (string c in condition) { if (c == "1") { if (string.IsNullOrEmpty(pipeline.UnitWorkId)) { isPass = false; break; } } if (c == "2") { if (string.IsNullOrEmpty(pipeline.UnitId)) { isPass = false; break; } } if (c == "3") { if (string.IsNullOrEmpty(newWeldJoint.DetectionTypeId)) { isPass = false; break; } } if (c == "4") { if (string.IsNullOrEmpty(pipeline.DetectionRateId)) { isPass = false; break; } } if (c == "5") { if (string.IsNullOrEmpty(pipeline.PipingClassId)) { isPass = false; break; } } // 6是管线,7是焊工都不可能为空,这里就不判断了 } if (isPass) { string strSql = @"SELECT PointBatchId FROM dbo.HJGL_Batch_PointBatch WHERE (EndDate IS NULL OR EndDate ='') AND ProjectId = @ProjectId AND UnitWorkId = @UnitWorkId AND UnitId =@UnitId AND DetectionTypeId =@DetectionTypeId AND DetectionRateId =@DetectionRateId"; List listStr = new List { new SqlParameter("@ProjectId", project.ProjectId), new SqlParameter("@UnitWorkId", pipeline.UnitWorkId), new SqlParameter("@UnitId", pipeline.UnitId), new SqlParameter("@DetectionTypeId", pipeline.DetectionType), new SqlParameter("@DetectionRateId", pipeline.DetectionRateId) }; // 5,6,7项为可选项 if (condition.Contains("5")) { strSql += " AND PipingClassId =@PipingClassId"; listStr.Add(new SqlParameter("@PipingClassId", pipeline.PipingClassId)); } if (condition.Contains("6")) { strSql += " AND PipelineId =@PipelineId"; listStr.Add(new SqlParameter("@PipelineId", newWeldJoint.PipelineId)); } if (condition.Contains("7")) { strSql += " AND WelderId =@WelderId"; listStr.Add(new SqlParameter("@WelderId", newWeldJoint.CoverWelderId)); } SqlParameter[] parameter = listStr.ToArray(); DataTable batchInfo = SQLHelper.GetDataTableRunText(strSql, parameter); string batchId = string.Empty; if (batchInfo.Rows.Count == 0) { Model.HJGL_Batch_PointBatch batch = new Model.HJGL_Batch_PointBatch(); batch.PointBatchId = SQLHelper.GetNewID(typeof(Model.HJGL_Batch_PointBatch)); batchId = batch.PointBatchId; string perfix = project.ProjectCode + "-" + unitWork.UnitWorkCode + "-GD-DK-" + ndt.DetectionTypeCode + "-" + ndtr.DetectionRateValue.ToString() + "%-"; batch.PointBatchCode = BLL.SQLHelper.RunProcNewIdByProjectId("SpGetNewCode4ByProjectId", "dbo.HJGL_Batch_PointBatch", "PointBatchCode", project.ProjectId, perfix); batch.ProjectId = project.ProjectId; batch.UnitWorkId = pipeline.UnitWorkId; batch.BatchCondition = batchCondition; batch.UnitId = pipeline.UnitId; batch.DetectionTypeId = pipeline.DetectionType; batch.DetectionRateId = pipeline.DetectionRateId; if (condition.Contains("5")) { batch.PipingClassId = pipeline.PipingClassId; } if (condition.Contains("6")) { batch.PipelineId = newWeldJoint.PipelineId; if (pipeline.PipeArea == PipelineService.PipeArea_FIELD) { perfix += "XC-"; batch.PointBatchCode = BLL.SQLHelper.RunProcNewIdByProjectId("SpGetNewCode4ByProjectId", "dbo.HJGL_Batch_PointBatch", "PointBatchCode", project.ProjectId, perfix); } else if (pipeline.PipeArea == PipelineService.PipeArea_SHOP) { perfix += "GC-"; batch.PointBatchCode = BLL.SQLHelper.RunProcNewIdByProjectId("SpGetNewCode4ByProjectId", "dbo.HJGL_Batch_PointBatch", "PointBatchCode", project.ProjectId, perfix); } } if (condition.Contains("7")) { batch.WelderId = newWeldJoint.CoverWelderId; } batch.StartDate = DateTime.Now; BLL.PointBatchService.AddPointBatch(batch); } else { batchId = batchInfo.Rows[0][0].ToString(); } var b = BLL.PointBatchDetailService.GetBatchDetailByJotId(weldJointId); if (b == null) { try { Model.HJGL_Batch_PointBatchItem batchDetail = new Model.HJGL_Batch_PointBatchItem(); string pointBatchItemId = SQLHelper.GetNewID(typeof(Model.HJGL_Batch_PointBatchItem)); batchDetail.PointBatchItemId = pointBatchItemId; batchDetail.PointBatchId = batchId; batchDetail.WeldJointId = weldJointId; batchDetail.WeldingDate = weldingDate; batchDetail.CreatDate = DateTime.Now; BLL.Funs.DB.HJGL_Batch_PointBatchItem.InsertOnSubmit(batchDetail); BLL.Funs.DB.SubmitChanges(); /*// 焊工首道口RT必点 var joints = from x in Funs.DB.HJGL_Batch_PointBatchItem join y in Funs.DB.HJGL_Batch_PointBatch on x.PointBatchId equals y.PointBatchId join z in Funs.DB.Base_DetectionType on y.DetectionTypeId equals z.DetectionTypeId join j in Funs.DB.HJGL_WeldJoint on x.WeldJointId equals j.WeldJointId where z.DetectionTypeCode == "RT" && j.CoverWelderId == newWeldJoint.CoverWelderId select x; if (joints.Count() <= 1) { BLL.PointBatchDetailService.UpdatePointBatchDetail(pointBatchItemId, "1", System.DateTime.Now); BLL.PointBatchDetailService.UpdateWelderFirst(pointBatchItemId, true); }*/ } catch { } } } else { errlog += "焊口【" + newWeldJoint.WeldJointCode + "】组批条件不能为空。"; } } return errlog; } } }