Exemplo n.º 1
0
        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, "状态没改变"));
        }
Exemplo n.º 2
0
        public static CheckData CreateItem(string checkorderid, int checkitemid, int sampleindex)
        {
            CheckData item = new CheckData {
                CheckOrderID = checkorderid, CheckItemID = checkitemid, SampleIndex = sampleindex
            };

            return(item);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        /// <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);
            }
        }
Exemplo n.º 5
0
        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));
        }