public object[] GetDisToLineQuery(DisToLineQuery disToLine) { string sql = @"Select d.segcode,d.sscode,d.mocode,d.mcode,m.mname, h.moplanqty,d.mssdisqty,d.mssleftqty, nvl(wt.cycletime, 0) as cycletime,nvl(mb.mobitemqty, 0) as mobitemqty, (d.mssleftqty / mobitemqty * cycletime) as lefttime,d.status From tbldistolinedetail d Inner join tbldistolinehead h on h.mocode = d.mocode and h.mcode = d.mcode left join tblmaterial m on m.mcode = d.mcode inner join tblmo mo on mo.mocode = d.mocode left join tblmobom mb on mb.mocode = d.mocode and mb.mobitemcode = d.mcode Left join tblplanworktime wt on wt.itemcode = mo.itemcode and wt.sscode = d.sscode Where mo.mostatus not in ('mostatus_initial', 'mostatus_close') and d.status in ('ShortDis', 'ERDis', 'WaitDis', 'Normal') and d.segcode='{0}' and d.sscode='{1}' and d.mocode='{2}' and d.mcode='{3}'"; sql = string.Format(sql, disToLine.SegCode, disToLine.SSCode, disToLine.MOCode, disToLine.MCode); return(DataProvider.CustomQuery(typeof(DisToLineQuery), new SQLCondition(sql))); }
//获取配送实时状态 public string GetDisToLineStatus(DisToLineQuery disToLine)//ALERTDISER { SystemSettingFacade systemSettingFacade = new SystemSettingFacade(DataProvider); string strNormal = systemSettingFacade.GetParameterAlias("ALERTMATERIALDISGROUP", "ALERTDISNORMAL"); int normal = 0; if (!string.IsNullOrEmpty(strNormal)) { normal = Convert.ToInt32(strNormal); } string strDisER = systemSettingFacade.GetParameterAlias("ALERTMATERIALDISGROUP", "ALERTDISER"); int disER = 0; if (!string.IsNullOrEmpty(strDisER)) { disER = Convert.ToInt32(strDisER); } //状态根据剩余生产时间换算(小于cycleTime为缺料中、小于紧急预警时间为紧急配料、小于正常预警时间为待配送) if (disToLine.lefttime < disToLine.CycleTime) { return("ShortDis"); } if (disToLine.lefttime <= disER) { return("ERDis"); } if (disToLine.lefttime <= normal) { return("WaitDis"); } return("Normal"); }
private bool NeedAddLine(DisToLineQuery disToLineQuery) { if (disToLineQuery.status == "ShortDis" || disToLineQuery.status == "ERDis" || disToLineQuery.status == "WaitDis") { return(true); } else { return(false); } }
public void BindMessage() { if (listDisToLine.Count > 0 && messageNO < listDisToLine.Count) { DisToLineQuery disToLineQuery = listDisToLine[messageNO]; WatchPanelDisToLineFacade watchPanelDisToLineFacade = new WatchPanelDisToLineFacade(this.DataProvider); object[] disToLineObjs = watchPanelDisToLineFacade.GetDisToLineQuery(disToLineQuery); if (disToLineObjs != null && disToLineObjs.Length > 0) { disToLineQuery = disToLineObjs[0] as DisToLineQuery; } disToLineQuery.status = GetDisToLineStatus(disToLineQuery); if (!NeedAddLine(disToLineQuery)) { listDisToLine.Remove(disToLineQuery); } string message = disToLineQuery.SegCode + "车间" + disToLineQuery.SSCode + "产线" + disToLineQuery.MCode + "物料" + GetStatusMessageCHS(disToLineQuery.status); this.exceptionMessageControl.ExceptionMessage = message; if (disToLineQuery.status == "WaitDis") { this.exceptionMessageControl.MessageColor = Color.LightBlue; } else if (disToLineQuery.status == "ERDis") { this.exceptionMessageControl.MessageColor = Color.Yellow; } else if (disToLineQuery.status == "ShortDis") { this.exceptionMessageControl.MessageColor = Color.Red; } messageNO++; } else { this.exceptionMessageControl.ExceptionMessage = string.Empty; messageNO = 0; } }
private void BindDataTableMaterial(object[] disToLineObjs) { m_DisToLineDataTable.Rows.Clear(); if (disToLineObjs.Length <= PageRowNum)//不需要翻页 { foreach (DisToLineQuery disToLine in disToLineObjs) { DataRow newRow = this.m_DisToLineDataTable.NewRow(); newRow["SegCode"] = disToLine.SegCode; newRow["SSCode"] = disToLine.SSCode; newRow["MoCode"] = disToLine.MOCode; newRow["MCode"] = disToLine.MCode; newRow["MName"] = disToLine.MName; newRow["MoPlanQty"] = disToLine.MOPlanQty; newRow["MssSisQty"] = disToLine.MSSDisQty; newRow["MssLeftQty"] = disToLine.MSSLeftQty; string time = string.Empty; if (disToLine.lefttime < 60) { time = disToLine.lefttime.ToString() + "秒"; } else if (disToLine.lefttime % 60 > 0) { time = (Math.Ceiling(disToLine.lefttime / 60)).ToString() + "分" + Math.Ceiling(disToLine.lefttime % 60) + "秒"; } else { time = (Math.Ceiling(disToLine.lefttime / 60)).ToString() + "分"; } newRow["LeftTime"] = time; newRow["Status"] = GetStatusCHS(GetDisToLineStatus(disToLine)); this.m_DisToLineDataTable.Rows.Add(newRow); if (NeedAddLine(disToLine)) { listDisToLine.Add(disToLine); } } } else { if (_FromIQCCount + PageRowNum < disToLineObjs.Length) { for (int i = _FromIQCCount; i < _FromIQCCount + PageRowNum; i++) { DisToLineQuery disToLine = (DisToLineQuery)disToLineObjs[i]; DataRow newRow = this.m_DisToLineDataTable.NewRow(); newRow["SegCode"] = disToLine.SegCode; newRow["SSCode"] = disToLine.SSCode; newRow["MoCode"] = disToLine.MOCode; newRow["MCode"] = disToLine.MCode; newRow["MName"] = disToLine.MName; newRow["MoPlanQty"] = disToLine.MOPlanQty; newRow["MssSisQty"] = disToLine.MSSDisQty; newRow["MssLeftQty"] = disToLine.MSSLeftQty; string time = string.Empty; if (disToLine.lefttime < 60) { time = disToLine.lefttime.ToString() + "秒"; } else if (disToLine.lefttime % 60 > 0) { time = (Math.Ceiling(Convert.ToDecimal(disToLine.lefttime / 60))).ToString() + "分" + disToLine.lefttime % 60 + "秒"; } else { time = (Math.Ceiling(Convert.ToDecimal(disToLine.lefttime / 60))).ToString() + "分"; } newRow["LeftTime"] = time; newRow["Status"] = GetStatusCHS(GetDisToLineStatus(disToLine)); this.m_DisToLineDataTable.Rows.Add(newRow); if (NeedAddLine(disToLine)) { listDisToLine.Add(disToLine); } } _FromIQCCount += PageRowNum; } else { for (int i = _FromIQCCount; i < disToLineObjs.Length; i++) { DisToLineQuery disToLine = (DisToLineQuery)disToLineObjs[i]; DataRow newRow = this.m_DisToLineDataTable.NewRow(); newRow["SegCode"] = disToLine.SegCode; newRow["SSCode"] = disToLine.SSCode; newRow["MoCode"] = disToLine.MOCode; newRow["MCode"] = disToLine.MCode; newRow["MName"] = disToLine.MName; newRow["MoPlanQty"] = disToLine.MOPlanQty; newRow["MssSisQty"] = disToLine.MSSDisQty; newRow["MssLeftQty"] = disToLine.MSSLeftQty; string time = string.Empty; if (disToLine.lefttime < 60) { time = disToLine.lefttime.ToString() + "秒"; } else if (disToLine.lefttime % 60 > 0) { time = (Math.Ceiling(disToLine.lefttime / 60)).ToString() + "分" + Math.Ceiling(disToLine.lefttime % 60) + "秒"; } else { time = (Math.Ceiling(disToLine.lefttime / 60)).ToString() + "分"; } newRow["LeftTime"] = time; newRow["Status"] = GetStatusCHS(GetDisToLineStatus(disToLine)); this.m_DisToLineDataTable.Rows.Add(newRow); if (NeedAddLine(disToLine)) { listDisToLine.Add(disToLine); } } _FromIQCCount = 0; } } m_DisToLineDataTable.AcceptChanges(); }