261 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			261 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using System.Text;
							 | 
						|||
| 
								 | 
							
								using System.Collections;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace BLL
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    public class PointBatchDetailService
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据批明细ID获取批明细信息
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="batchId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static Model.HJGL_Batch_PointBatchItem GetBatchDetailById(string batchDetailId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return Funs.DB.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.PointBatchItemId == batchDetailId);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据批焊口ID获取批明细信息
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="jotId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static Model.HJGL_Batch_PointBatchItem GetBatchDetailByJotId(string jotId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return Funs.DB.HJGL_Batch_PointBatchItem.FirstOrDefault(e => e.WeldJointId == jotId);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static List<Model.HJGL_Batch_PointBatchItem> GetBatchDetailByBatchId(string batchId)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return Funs.DB.HJGL_Batch_PointBatchItem.Where(e => e.PointBatchId == batchId).ToList();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public static List<Model.HJGL_Batch_PointBatchItem> 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();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 修改
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="batchDetail"></param>
							 | 
						|||
| 
								 | 
							
								        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 点口审核
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 点口审核
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="pointBatchItemId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="isAudit"></param>
							 | 
						|||
| 
								 | 
							
								        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 首件制
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 焊工首两件
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="pointBatchItemId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="welderFirst"></param>
							 | 
						|||
| 
								 | 
							
								        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();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 管线首件
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="pointBatchItemId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="pipelineFirst"></param>
							 | 
						|||
| 
								 | 
							
								        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
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据批焊口ID删除批明细信息
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="checkId"></param>
							 | 
						|||
| 
								 | 
							
								        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();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 增加
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="batchDetail"></param>
							 | 
						|||
| 
								 | 
							
								        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();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 根据主键删除明细
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="batchDetailId"></param>
							 | 
						|||
| 
								 | 
							
								        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();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 检验批自动点口算法
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="pointBatchId"></param>
							 | 
						|||
| 
								 | 
							
								        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() * 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 == "固定口" && 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);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |