/// <summary> /// 防跳序 /// </summary> /// <param name="batchNumber">生产批次号</param> /// <param name="productID">产品主键</param> /// <param name="startProcessID">当前工序</param> /// <returns>校验结果</returns> public string CheckSkipProcess(string batchNumber, string productID, string startProcessID) { string result = ""; //获取所有工序信息 List <ProcessInfo> allProcess = this.GetProductProcess(productID); //获取已完成工序信息 List <TraceProcess> finishedProcess = new QualityTraceQueryBLL().GetTraceProcess(new TraceGood { BatchNumber = batchNumber }); //定位当前工序 int startProcessIndex = allProcess.FindIndex(p => p.PID == startProcessID); if (startProcessIndex == 0) { return(result); } if (startProcessIndex == -1) { result = "无此工序"; return(result); } //获取当前开始工序的上一个工序编号 ProcessInfo prevProcess = allProcess[startProcessIndex - 1]; //判断上一工序是否完成 bool isFinished = finishedProcess.Exists(p => p.ProcessCode == prevProcess.PCODE); //如完成返回空串,如未完成,提示应完成工序 return(isFinished == true ? "" : "请先完成" + prevProcess.PNAME + "工序"); }
/// <summary> /// 防漏序 /// </summary> /// <param name="batchNumber">生产批次号</param> /// <param name="productID">产品主键</param> /// <returns>校验结果</returns> public string CheckMissingProcess(string batchNumber, string productID) { string result = ""; //获取所有工序信息 List <ProcessInfo> allProcess = this.GetProductProcess(productID); //获取已完成工序信息 List <TraceProcess> finishedProcess = new QualityTraceQueryBLL().GetTraceProcess(new TraceGood { BatchNumber = batchNumber }); //判断工序所有是否全部完成 foreach (ProcessInfo pi in allProcess) { bool f = finishedProcess.Exists(p => p.ProcessCode == pi.PCODE); if (f == false) { result = pi.PNAME + "工序" + "未完成"; break; } } return(result); }