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;
}
}
}