using System; using System.Collections.Generic; using System.Linq; using System.Text; using ICSSoft.Frame.Data.Entity; using ICSSoft.Frame.Data.DAL; using System.Data; namespace ICSSoft.Frame.Data.BLL { public class ICSLOTONWIPInspectionBLL { /// /// 保存送检记录,返回生成的送检单号 /// /// /// /// public static string Add(ICSLOTONWIPInspection info, string dsconn) { return ICSLOTONWIPInspectionDAL.Add(info, dsconn); } public static void AddList(List info, string dsconn) { ICSLOTONWIPInspectionDAL.AddList(info, dsconn); } /// /// 查询送检/巡检检验结果,包含多次(ICSLOTONWIPCheck.Enable=0),不计算(ICSLOTONWIPInspection.IsCalc=0) /// /// 如果为null,查所有 /// /// public static DataTable QueryInspectionInfo(string LOTNO, string conn) { return ICSLOTONWIPInspectionDAL.QueryInspectionInfo(LOTNO, conn); } public static DataTable QueryXunjian(string WIPDetail_ID, string WorkPoint, string dsconn) { DataTable dt = ICSLOTONWIPInspectionDAL.QueryXunjian(WIPDetail_ID, WorkPoint, dsconn); DataTable dtRes = dt.Clone(); foreach (DataRow dr in dt.Rows) { try { string DetailID = dr["DetailID"].ToString(); string MOCODE = dr["MOCODE"].ToString(); string MOSEQ = dr["MOSEQ"].ToString(); string LOTNO = dr["LOTNO"].ToString(); string ROUTECODE = dr["ROUTECODE"].ToString(); string OPCODE = dr["OPCODE"].ToString(); string EQPCODE = dr["EQPCODE"].ToString(); //1.Remove string TransNO = dr["TransNO"].ToString(); string endtime = dr["EndDateTime"].ToString(); if (!string.IsNullOrEmpty(TransNO) && string.IsNullOrEmpty(endtime)) { throw new Exception("上次巡检结果未出 , 请先处理! 巡检单 : " + TransNO); } DataTable dtSJ_Lot = ICSWorkReportBLL.Shoujian("跟踪单", LOTNO, null, ROUTECODE, OPCODE, EQPCODE, WorkPoint); int noCheck = dtSJ_Lot.Select("Status='开始' or Status=''").Count(); if (noCheck > 0) { throw new Exception("remove:首件 检验结果未出 ,不可巡检, 请先处理 首件送检"); } DataTable dtSJ_MO = ICSWorkReportBLL.Shoujian("工单", MOCODE, MOSEQ, ROUTECODE, OPCODE, EQPCODE, WorkPoint); DataRow[] drsShoujian = dtSJ_MO.Select("CheckMode='量产首件' OR CheckMode='样品首件'"); if (drsShoujian.Count() == 0) { throw new Exception("remove:没有[量产首件/样品首件]送检记录, 请通知操作员送检 量产首件/样品首件 ,不可巡检"); } else { if (drsShoujian.Where(a => a.Field("Status") == "开始" || a.Field("Status") == "").Count() > 0) { throw new Exception("remove:量产首件/样品首件 检验结果未出 ,不可巡检"); } //送检时间排序最新一个 单子, 此单有任意一行不合格就算不合格 string lastTransNo = drsShoujian[0]["TransNO"].ToString(); var drs_lastTransNo = drsShoujian.Where(a => a.Field("TransNO") == lastTransNo); foreach (DataRow item in drs_lastTransNo) { string lastResSj = drsShoujian[0]["Status"].ToString(); if (lastResSj != "正常" && lastResSj != "放行") { throw new Exception("remove:最后一次 [量产首件/样品首件] " + lastTransNo + ", 不合格, 不可巡检"); } } } dtRes.Rows.Add(dr.ItemArray); } catch (Exception ex) { continue; } } return dtRes; } } }