/// <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="condition">条件</param> /// <returns>仓库列表</returns> public List <ProducePlan> GetUnFinishedPlans(ProducePlan condition) { List <ProducePlan> list = new ProducePlanDAL().GetUnFinishedPlans(condition); foreach (ProducePlan plan in list) { //获取物料组成 List <TraceMaterial> materials = new QualityTraceQueryBLL().GetTraceMaterial(new TraceGood { BatchNumber = plan.BATCHNUMBER }); plan.Materials = ""; foreach (TraceMaterial m in materials) { plan.Materials += "," + m.MatName; } if (string.IsNullOrEmpty(plan.Materials) == false) { plan.Materials = plan.Materials.Substring(1); } //获取工序信息 //获取已完成工序信息 List <TraceProcess> processList = new QualityTraceQueryBLL().GetTraceProcess(new TraceGood { BatchNumber = plan.BATCHNUMBER }); foreach (TraceProcess p in processList) { plan.FinishedProcess += "," + p.ProcessName; } if (string.IsNullOrEmpty(plan.FinishedProcess) == false) { plan.FinishedProcess = plan.FinishedProcess.Substring(1); } if (processList.Count > 0) { plan.StartTime = processList[0].WorkingStartTime; } //生成未完成工序信息 } return(list); }
private void BindData() { QualityTraceQueryBLL bll = null; DataPage dp = new DataPage(); QualityTraceCondition condition = new QualityTraceCondition(); try { bll = BLLFactory.CreateBLL <QualityTraceQueryBLL>(); condition.StartDate = this.StartDate.Text; condition.EndDate = this.EndDate.Text; condition.Factory = this.Factory.SelectedValue; condition.ProductLine = this.ProductLine.SelectedValue; condition.Product = this.Product.SelectedValue; condition.ProductBatchNumber = this.ProductBatchNumber.Text; condition.MatIDCode = this.MatIDCode.Text; condition.ProductIDCode = this.ProductIDCode.Text; PagerHelper.InitPageControl(this.AspNetPager1, dp, true); dp = bll.GetList(condition, dp); List <QualityTraceInfo> list = dp.Result as List <QualityTraceInfo>; this.GvList.DataSource = list; this.GvList.DataBind(); for (int i = 0; i < this.GvList.Rows.Count; i++) { LinkButton lbtQualityTrace = this.GvList.Rows[i].Cells[7].FindControl("lbtQualityTrace") as LinkButton; lbtQualityTrace.OnClientClick = "viewTraceDetail('" + this.GvList.DataKeys[i]["PID"].ToString() + "');return false;"; } PagerHelper.SetPageControl(AspNetPager1, dp, true); } catch (Exception ex) { throw ex; } }
/// <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); }
private void BindData() { TraceGood good = null; string pid = Request.QueryString["pid"]; //绑定产品基本信息 good = new QualityTraceQueryBLL().GetTraceGood(pid); UIBindHelper.BindForm(this.Page, good); //绑定物料组成信息 List <TraceMaterial> materialList = new QualityTraceQueryBLL().GetTraceMaterial(new TraceGood { BatchNumber = good.BatchNumber }); this.HiMaterial.Value = LAF.Common.Serialization.JsonConvertHelper.GetSerializes(materialList); //绑定加工工序信息 List <TraceProcess> processList = new QualityTraceQueryBLL().GetTraceProcess(new TraceGood { BatchNumber = good.BatchNumber }); this.HiProcess.Value = LAF.Common.Serialization.JsonConvertHelper.GetSerializes(processList); }
private void BindData() { string batchNumber = "2017111401"; string barCode = Request.QueryString["BarCode"]; TraceGood good = null; batchNumber = new GoodPackingBLL().GetBatchNumberByBarCode(barCode); if (string.IsNullOrEmpty(batchNumber) == true) { this.ProduceName.Text = "追溯码无效"; return; } //绑定产品基本信息 good = new QualityTraceQueryBLL().GetTraceGoodByBN(batchNumber); if (good == null) { this.ProduceName.Text = "追溯码无效"; return; } this.ProduceName.Text = good.ProductName; this.SPECIFICATION.Text = good.SPECIFICATION; this.ProductionAddress.Text = good.ProductionAddress; this.Manufacturer.Text = good.Manufacturer; this.QualityPeriod.Text = good.QualityPeriod; this.ProduceDate.Text = good.ProduceDate.ToString("yyyy年MM月dd日"); this.ProduceBatchNumber.Text = good.BatchNumber; this.ProductionLicense.Text = good.ProductionLicense; this.ProductStandard.Text = good.ProductStandard; //绑定物料组成信息 List <TraceMaterial> materialList = new QualityTraceQueryBLL().GetTraceMaterial(new TraceGood { BatchNumber = good.BatchNumber }); materialList = materialList.GroupBy(x => new { x.MatName, x.ProductPlace }).Select(g => new TraceMaterial { MatName = g.Key.MatName, ProductPlace = g.Key.ProductPlace }) .ToList(); int seq1 = 1; foreach (TraceMaterial tm in materialList) { this.lblMaterials.Text += string.Format("<tr><td align=center>{0}</td><td align=center>{1}</td><td align=center><a href=\"#\">{2}</a></td></tr>", seq1.ToString(), tm.MatName, tm.ProductPlace); seq1++; } //绑定加工工序信息 List <TraceProcess> processList = new QualityTraceQueryBLL().GetTraceProcess(new TraceGood { BatchNumber = good.BatchNumber }); int seq2 = 1; foreach (TraceProcess tp in processList) { this.tblProcess.Text += string.Format("<tr><td align=center>{0}</td><td align=center>{1}</td><td align=center>{2}</td></tr>", seq2.ToString(), tp.ProcessName, tp.EquName); seq2++; } }