锐腾搅拌上料功能
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
4.7 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using ICSSoft.Frame.Data.Entity;
  6. using ICSSoft.Frame.Data.DAL;
  7. using System.Data;
  8. namespace ICSSoft.Frame.Data.BLL
  9. {
  10. public class ICSLOTONWIPInspectionBLL
  11. {
  12. /// <summary>
  13. /// 保存送检记录,返回生成的送检单号
  14. /// </summary>
  15. /// <param name="info"></param>
  16. /// <param name="dsconn"></param>
  17. /// <returns></returns>
  18. public static string Add(ICSLOTONWIPInspection info, string dsconn)
  19. {
  20. return ICSLOTONWIPInspectionDAL.Add(info, dsconn);
  21. }
  22. public static void AddList(List<ICSLOTONWIPInspection> info, string dsconn)
  23. {
  24. ICSLOTONWIPInspectionDAL.AddList(info, dsconn);
  25. }
  26. /// <summary>
  27. /// 查询送检/巡检检验结果,包含多次(ICSLOTONWIPCheck.Enable=0),不计算(ICSLOTONWIPInspection.IsCalc=0)
  28. /// </summary>
  29. /// <param name="LOTNO">如果为null,查所有</param>
  30. /// <param name="conn"></param>
  31. /// <returns></returns>
  32. public static DataTable QueryInspectionInfo(string LOTNO, string conn)
  33. {
  34. return ICSLOTONWIPInspectionDAL.QueryInspectionInfo(LOTNO, conn);
  35. }
  36. public static DataTable QueryXunjian(string WIPDetail_ID, string WorkPoint, string dsconn)
  37. {
  38. DataTable dt = ICSLOTONWIPInspectionDAL.QueryXunjian(WIPDetail_ID, WorkPoint, dsconn);
  39. DataTable dtRes = dt.Clone();
  40. foreach (DataRow dr in dt.Rows)
  41. {
  42. try
  43. {
  44. string DetailID = dr["DetailID"].ToString();
  45. string MOCODE = dr["MOCODE"].ToString();
  46. string MOSEQ = dr["MOSEQ"].ToString();
  47. string LOTNO = dr["LOTNO"].ToString();
  48. string ROUTECODE = dr["ROUTECODE"].ToString();
  49. string OPCODE = dr["OPCODE"].ToString();
  50. string EQPCODE = dr["EQPCODE"].ToString();
  51. //1.Remove
  52. string TransNO = dr["TransNO"].ToString();
  53. string endtime = dr["EndDateTime"].ToString();
  54. if (!string.IsNullOrEmpty(TransNO) && string.IsNullOrEmpty(endtime))
  55. {
  56. throw new Exception("上次巡检结果未出 , 请先处理! 巡检单 : " + TransNO);
  57. }
  58. DataTable dtSJ_Lot = ICSWorkReportBLL.Shoujian("跟踪单", LOTNO, null, ROUTECODE, OPCODE, EQPCODE, WorkPoint);
  59. int noCheck = dtSJ_Lot.Select("Status='开始' or Status=''").Count();
  60. if (noCheck > 0)
  61. {
  62. throw new Exception("remove:首件 检验结果未出 ,不可巡检, 请先处理 首件送检");
  63. }
  64. DataTable dtSJ_MO = ICSWorkReportBLL.Shoujian("工单", MOCODE, MOSEQ, ROUTECODE, OPCODE, EQPCODE, WorkPoint);
  65. DataRow[] drsShoujian = dtSJ_MO.Select("CheckMode='量产首件' OR CheckMode='样品首件'");
  66. if (drsShoujian.Count() == 0)
  67. {
  68. throw new Exception("remove:没有[量产首件/样品首件]送检记录, 请通知操作员送检 量产首件/样品首件 ,不可巡检");
  69. }
  70. else
  71. {
  72. if (drsShoujian.Where(a => a.Field<string>("Status") == "开始" || a.Field<string>("Status") == "").Count() > 0)
  73. {
  74. throw new Exception("remove:量产首件/样品首件 检验结果未出 ,不可巡检");
  75. }
  76. //送检时间排序最新一个 单子, 此单有任意一行不合格就算不合格
  77. string lastTransNo = drsShoujian[0]["TransNO"].ToString();
  78. var drs_lastTransNo = drsShoujian.Where(a => a.Field<string>("TransNO") == lastTransNo);
  79. foreach (DataRow item in drs_lastTransNo)
  80. {
  81. string lastResSj = drsShoujian[0]["Status"].ToString();
  82. if (lastResSj != "正常" && lastResSj != "放行")
  83. {
  84. throw new Exception("remove:最后一次 [量产首件/样品首件] " + lastTransNo + ", 不合格, 不可巡检");
  85. }
  86. }
  87. }
  88. dtRes.Rows.Add(dr.ItemArray);
  89. }
  90. catch (Exception ex)
  91. {
  92. continue;
  93. }
  94. }
  95. return dtRes;
  96. }
  97. }
  98. }