static public ReturnValue UpdateSampleOrderState(string orderid, string username, CheckOrderStateEnum orderstate, int usagedecisions) { ReturnValue rv = new ReturnValue(true); CheckOrder order = CheckOrder.GetItembyID(orderid); if (order == null) { return(new ReturnValue(false, -444, "找不到对应工单")); } //if (orderstate < 0 || orderstate > 5) //{ // return new ReturnValue(false, -444, "找不到对应状态"); //} CheckOrderStateEnum afterstate = (CheckOrderStateEnum)orderstate; if (order.CheckOrderState != afterstate) { order.State = DataState.Changed; switch (afterstate) { case CheckOrderStateEnum.Complete: // SSIT.QM.CheckManager.DatasForms.SampleDataInputForm form = new SampleInterface.DatasForms.SampleDataInputForm(order); // form.LoadInfo(); var dsRV = DataStat(orderid); order.QualifyJudge = (QualifyJudgeEnum)dsRV.ErrNum; //form.DataStat(); order.ActualInspector = username; order.CheckOrderState = CheckOrderStateEnum.Complete; order.ActualCheckDate = DateTime.Now.ToString(EncodeConst.DateTimeFormat); order.FinishedCheckItemString = CheckData.DataCommitSetting(order.SampleID); break; case CheckOrderStateEnum.Approve: var dsRV1 = DataStat(orderid); order.QualifyJudge = (QualifyJudgeEnum)dsRV1.ErrNum; order.CheckOrderState = CheckOrderStateEnum.Approve; order.UsageDecisions = usagedecisions; order.Auditor = username; order.ActualCheckDate = DateTime.Now.ToString(EncodeConst.DateTimeFormat); order.FinishedCheckItemString = CheckData.DataCommitSetting(order.SampleID); //联动 if (!string.IsNullOrWhiteSpace(order.SourceOrderID)) { SSIT.SystemManager.DataInterface.MessageContent.CreateNewMessage(order.SampleTypeName + " OrderID: " + order.SourceOrderID + " 已经完成检测并发布", order.Creator, order.Auditor); //(BreadInterface.SampleTypeEnum.QMOrder, order.SampleID, username); } else { SSIT.SystemManager.DataInterface.MessageContent.CreateNewMessage("检验工单:" + order.SampleID + " 已检", order.Creator, order.Auditor); } break; default: order.CheckOrderState = afterstate; break; } return(Encode.EncodeData.SaveDatas <CheckOrder>(new EncodeCollection <CheckOrder>(order))); } return(new ReturnValue(true, 0, "状态没改变")); }
public static CheckData CreateItem(string checkorderid, int checkitemid, int sampleindex) { CheckData item = new CheckData { CheckOrderID = checkorderid, CheckItemID = checkitemid, SampleIndex = sampleindex }; return(item); }
static public ReturnValue DataStat_old(string sampleid) { //A B C D 对应0,1,2,3 var ec = CheckData.LoadDatasbySampleID(sampleid); if (ec.Count == 0) { return(new ReturnValue(true, (int)QualifyJudgeEnum.UnFinish, "未完成")); } List <int> checkitems = new List <int>(); var order = ec[0].Order; if (order != null && order.GetPlanCheckItemCount > 0) { checkitems = order.PlanCheckItems; } EncodeCollection <CheckData> ecFalse = new EncodeCollection <CheckData>(); foreach (CheckData item in ec) { item.SetPass(); if (item.IsFalse) { ecFalse.Add(item); } if (checkitems.Contains(item.CheckItemID)) { checkitems.Remove(item.CheckItemID); } } if (ecFalse.Count == 0) { if (checkitems.Count > 0) { return(new ReturnValue(true, (int)QualifyJudgeEnum.UnFinish, "合格,但有项目未完成")); } else { return(new ReturnValue(true, (int)QualifyJudgeEnum.Pass, "合格")); } } Dictionary <CheckItemTypeEnum, EncodeCollection <CheckData> > dic = new Dictionary <CheckItemTypeEnum, EncodeCollection <CheckData> >(); foreach (var item in ecFalse) { var checkitem = CheckItem.Instance.GetItembyKey(item.CheckItemID.ToString()); if (checkitem != null) { if (!dic.ContainsKey(checkitem.CheckTypeID)) { dic.Add(checkitem.CheckTypeID, new EncodeCollection <CheckData>()); } dic[checkitem.CheckTypeID].Add(item); } } ReturnValue rv = null; if (dic.ContainsKey(CheckItemTypeEnum.A)) { rv = new ReturnValue(false, (int)QualifyJudgeEnum.False, "有1个以上A类不合格"); } else if (dic.ContainsKey(CheckItemTypeEnum.B) && dic[CheckItemTypeEnum.B].Count >= 2) { rv = new ReturnValue(false, (int)QualifyJudgeEnum.False, "有2个以上B类不合格"); } else if (dic.ContainsKey(CheckItemTypeEnum.D)) { rv = new ReturnValue(false, (int)QualifyJudgeEnum.False, "出现D类不合格"); } else if (dic.ContainsKey(CheckItemTypeEnum.C)) { rv = new ReturnValue(true, (int)QualifyJudgeEnum.UnJudge, "有C类不合格"); } else if (dic.ContainsKey(CheckItemTypeEnum.B)) { rv = new ReturnValue(true, (int)QualifyJudgeEnum.Pass, "有1个B类不合格"); } if (rv != null) { if (checkitems.Count > 0) { return(new ReturnValue(true, (int)QualifyJudgeEnum.UnFinish, "有项目未完成,且" + rv.Message)); } return(rv); } return(new ReturnValue(true)); }
/// <summary> /// 对一个checkitem进行判断 /// </summary> /// <param name="datas"></param> /// <returns></returns> static public QualifyJudgeEnum QualifyOneCheckItemJudge(List <CheckData> datas) { if (datas.Count == 0) { return(QualifyJudgeEnum.Empty); } CheckData first = datas[0]; CheckStandard checkStandard = first.GetCheckStandar(); if (checkStandard == null || string.IsNullOrWhiteSpace(first.StandardStr)) { return(QualifyJudgeEnum.UnJudge); } if (first.ValueType == ValueTypeEnum.Selection) { return(QualifyJudgeEnum.UnJudge); } // List<string> values = new List<string>(); bool bUnFinish = true; int passcount = 0; for (int index = 0; index < datas.Count; index++) { //string value = (string)cell.Value; CheckData data = datas[index]; if (!string.IsNullOrWhiteSpace(data.DataValue)) { bUnFinish = false; //return QualifyJudgeEnum.UnFinish; //datas.Add(data); bool isfalse = data.IsFalse; data.SetPass(); if (isfalse != data.IsFalse) { data.State = DataState.Changed; Encode.EncodeData.SaveDatas <CheckData>(new EncodeCollection <CheckData>(data)); } if (!data.IsFalse) { passcount++; } //values.Add(data); // break; } } if (bUnFinish) { return(QualifyJudgeEnum.UnFinish); } float rate = 100f * passcount / datas.Count; if (rate >= checkStandard.QualifyRate) { return(QualifyJudgeEnum.Pass); } else { return(QualifyJudgeEnum.False); } }
static public ReturnValue DataStat(string sampleid) { //A B C D 对应0,1,2,3 var ec = CheckData.LoadDatasbySampleID(sampleid); if (ec.Count == 0) { return(new ReturnValue(true, (int)QualifyJudgeEnum.UnFinish, "未完成")); } List <int> checkitems = new List <int>(); var order = ec[0].Order; if (order != null && order.GetPlanCheckItemCount > 0) { checkitems = order.PlanCheckItems; } Dictionary <int, List <CheckData> > dicData = new Dictionary <int, List <CheckData> >(); foreach (CheckData item in ec) { if (string.IsNullOrWhiteSpace(item.DataValue)) { continue; } if (!dicData.ContainsKey(item.CheckItemID)) { dicData.Add(item.CheckItemID, new List <CheckData>()); } dicData[item.CheckItemID].Add(item); if (checkitems.Contains(item.CheckItemID)) { checkitems.Remove(item.CheckItemID); } } Dictionary <CheckItemTypeEnum, int> dicFalseCount = new Dictionary <CheckItemTypeEnum, int>(); foreach (var key in dicData.Keys) { var qj = QualifyOneCheckItemJudge(dicData[key]); if (qj == QualifyJudgeEnum.False) { CheckItem item = CheckItem.Instance.GetItembyKey(key.ToString()); if (item != null) { if (!dicFalseCount.ContainsKey(item.CheckTypeID)) { dicFalseCount.Add(item.CheckTypeID, 0); } dicFalseCount[item.CheckTypeID]++; } } } ReturnValue rv = null; if (dicFalseCount.Count == 0) { if (checkitems.Count > 0) { return(new ReturnValue(true, (int)QualifyJudgeEnum.UnFinish, "合格,但有项目未完成")); } else { return(new ReturnValue(true, (int)QualifyJudgeEnum.Pass, "合格")); } } if (dicFalseCount.ContainsKey(CheckItemTypeEnum.A)) { rv = new ReturnValue(false, (int)QualifyJudgeEnum.False, "有1个以上A类不合格"); } else if (dicFalseCount.ContainsKey(CheckItemTypeEnum.B) && dicFalseCount[CheckItemTypeEnum.B] >= 2) { rv = new ReturnValue(false, (int)QualifyJudgeEnum.False, "有2个以上B类不合格"); } else if (dicFalseCount.ContainsKey(CheckItemTypeEnum.D)) { rv = new ReturnValue(false, (int)QualifyJudgeEnum.False, "出现D类不合格"); } else if (dicFalseCount.ContainsKey(CheckItemTypeEnum.C)) { rv = new ReturnValue(true, (int)QualifyJudgeEnum.UnJudge, "有C类不合格"); } else if (dicFalseCount.ContainsKey(CheckItemTypeEnum.B)) { rv = new ReturnValue(true, (int)QualifyJudgeEnum.Pass, "有1个B类不合格"); } if (rv != null) { if (checkitems.Count > 0) { return(new ReturnValue(true, (int)QualifyJudgeEnum.UnFinish, "有项目未完成,且" + rv.Message)); } return(rv); } return(new ReturnValue(true)); }