Beispiel #1
0
        private void showStepWin(T_GelStep t_GelStep)
        {
            var vm = IoC.Get <EditStepViewModel>();

            vm.t_GelStep = t_GelStep;
            windowManager.ShowDialog(vm);
        }
Beispiel #2
0
        public void Ok()
        {
            var resmanager = ResManager.getInstance();
            var actiongen  = ActionGenerater.getInstance();
            var GelList    = (this.View as ScanSampleView).GelList;
            List <T_GelStep> gelstep_list = new List <T_GelStep>();

            foreach (var sample in Samples)
            {
                var test_list = sample.GetTestList();
                var gel_list  = new List <ResInfoData>();
                foreach (var test in test_list)
                {
                    var ware_seat = resmanager.GetResByCode(GelList[test].GelMask + "*", "T_BJ_GelWarehouse", "", "", lastinfo_list);
                    if (ware_seat == null)
                    {
                        ErrorSystem.WriteActError("无卡", true, false);
                        return;
                    }
                    ware_seat.sampleinfo = sample;
                    lastinfo_list.Add(ware_seat);
                    gel_list.Add(ware_seat);
                }
                foreach (var ware_seat in gel_list)
                {
                    var gelend = new T_GelStep();
                    gelstep_list     = gelstep_list.Concat(actiongen.ResolveActions(ware_seat)).ToList();
                    gelend.StepClass = TestStepEnum.GELEND;
                    gelstep_list.Add(gelend);
                }
            }
            //破孔位还有多小个
            int paperseat_count = 9;

            for (int i = 0; i < gelstep_list.Count; i++)
            {
                if (gelstep_list[i].StepClass == TestStepEnum.LoadGel && paperseat_count > 0)
                {
                    gelstep_list[i].StepIndex = 10000 - i;
                    paperseat_count--;
                }
                else
                {
                    gelstep_list[i].StepIndex = 1000 - i;
                }
            }
            gelstep_list.Sort((T_GelStep a, T_GelStep b) => { return(a.StepIndex < b.StepIndex ? 1 : -1); });
            var action_tree = actiongen.DivideIntoGroups(gelstep_list, 1);

            InjLogicManager.getInstance().AddAction(action_tree);

            this.RequestClose();
        }
Beispiel #3
0
        protected override void OnViewLoaded()
        {
            t_GSBackup = TransExpUtil <T_GelStep, T_GelStep> .Trans(t_GelStep);

            if (t_GelStep.StepID != 0)
            {
                var obj = StepList.Where(c => c.ID == t_GelStep.StepID);
                if (obj != null && obj.Count() > 0)
                {
                    SwitchPage(obj.First());
                }
            }
        }
Beispiel #4
0
 public bool DeleteGelStep(T_GelStep t_GelStep)
 {
     return(gelDAO.DeleteGelStep(t_GelStep));
 }
Beispiel #5
0
        }                                //批次号(相同批次号时没开孔才可以合并)

        public static ExperimentPackage Create(List <T_GelStep> aaction_list, string gelmask, string samplebar, string volunteerbar, int lever, int geltype, int renfen, int afterkktime, bool isusedgel, int gel_test_id, bool is_crossmatching, int batch_id, bool is_double)
        {
            var exp = new ExperimentPackage();

            exp.lever = lever;
            exp.AddSampleCode(samplebar);
            exp.AddvolunteerCode(volunteerbar);
            exp.gel_mask_id      = ResManager.getInstance().AddGelMaskByID(gelmask);
            exp.start_time       = DateTime.Now.ToString("yyyyMMddHHmmss");
            exp.start_time_data  = DateTime.Now;
            exp.gel_test_id      = gel_test_id;
            exp.batch_id         = batch_id;
            exp.is_crossmatching = is_crossmatching;
            exp.is_open          = false;
            exp.package_id       = g_package_id;
            exp.is_double        = is_double;
            g_package_id++;
            foreach (var act in aaction_list)
            {
                act.ExperPackage = exp;
                exp.action_list.Add(new LogicAction(act));
            }
            //省卡模式
            exp.gel_type     = geltype;
            exp.ren_fen      = renfen;
            exp.after_kktime = afterkktime * 60 * 1000;
            exp.is_used_gel  = isusedgel;
            var economize = new T_GelStep();

            economize.ExperPackage = exp;
            economize.StepClass    = TestStepEnum.ECONOMIZECOUNTTIME;
            if (isusedgel)
            {
                exp.action_list.Add(new LogicAction(economize));
            }
            int  index            = 0;
            bool is_sort_index_ok = false;

            foreach (var act in exp.action_list)
            {
                act.GetGelStep().StepIndex   = index;
                act.GetGelStep().SampleIndex = 0;
                if (is_sort_index_ok == false)
                {
                    exp.sort_index = exp.gel_test_id;
                }
                if (act.GetGelStep().StepClass == TestStepEnum.ZKDFY)
                {
                    ZKDFYStepParameter parameter = act.GetGelStep().StepParamters.ToInstance <ZKDFYStepParameter>();
                    exp.hatch_time = parameter.YsTime;
                    if (is_sort_index_ok == false)
                    {
                        exp.sort_index  += 100000;
                        is_sort_index_ok = true;
                    }
                }
                index++;
            }
            exp.UpdataSampleIndex();
            if (is_crossmatching)
            {
                exp.SortCrossMatching();
            }
            return(exp);
        }
Beispiel #6
0
        //把转换为action point
        public ActionPoint GelStepToActionPoint(T_GelStep gel_step, TestStepEnum type)
        {
            if (gel_step.StepClass == TestStepEnum.FPYT && gel_step.GetLiquidInfo().IsDetector&& type != TestStepEnum.MixLiquid && type != TestStepEnum.SpuLiquid)
            {
                type = TestStepEnum.FollowAbsLiquid;
            }
            ActionPoint action_point = new ActionPoint(-1, -1, -1, type);
            var         resmanager   = ResManager.getInstance();
            var         exp_pack     = ((ExperimentPackage)gel_step.ExperPackage);

            if (gel_step.StepClass == TestStepEnum.FPYT)
            {
                //是否为混合
                bool is_mix     = gel_step.is_mix;
                var  fpytinfo   = gel_step.GetFpytInfo();
                var  liquidinfo = gel_step.GetLiquidInfo();
                action_point.deep         = (int)liquidinfo.Deep;
                action_point.deepspeed    = (int)liquidinfo.DeeSpeed;
                action_point.detectordeep = (int)liquidinfo.DetectorDeep;
                action_point.tube         = (int)(fpytinfo.TubeValue >> gel_step.SampleIndex);
                action_point.capacity     = (int)liquidinfo.Vol;
                action_point.absbspeed    = (int)liquidinfo.AbsSpeed;
                action_point.spuspeed     = (int)liquidinfo.SpuSpeed;
                action_point.backcapacity = (int)liquidinfo.BackCapacity;
                action_point.backspeed    = (int)liquidinfo.BackCapacitySpeed;
                action_point.mixtimes     = (int)(gel_step.is_spu?fpytinfo.MixTimes:0);
                action_point.mixdeep      = (int)fpytinfo.MixDeep;
                action_point.spucapacity  = (int)fpytinfo.Vol;
                if (action_point.type == TestStepEnum.AbsLiquid || action_point.type == TestStepEnum.FollowAbsLiquid)
                {
                    ResInfoData abs_tager = null;//吸取的液体
                    if (liquidinfo.LiquidType == "病人红细胞" || liquidinfo.LiquidType == "病人血清")
                    {
                        abs_tager = resmanager.GetResByCode(exp_pack.GetSampleCode(gel_step.SampleIndex), "T_BJ_SampleRack");
                    }
                    else
                    {
                        abs_tager = resmanager.GetResByCode(liquidinfo.LiquidType, "T_BJ_AgentiaWarehouse");
                    }
                    System.Diagnostics.Debug.Assert(abs_tager != null);
                    action_point.x = abs_tager.InjectorX;
                    action_point.y = abs_tager.InjectorY;
                    action_point.z = abs_tager.InjectorZ;
                }
                else if (action_point.type == TestStepEnum.MixLiquid)
                {
                    //查找deep盘
                    ResInfoData deep_plane = resmanager.GetResByCode(gel_step.MixCode, "T_BJ_DeepPlate");
                    if (deep_plane == null)
                    {
                        //deep_plane = resmanager.GetFreeDeepPlate(5);
                        deep_plane = resmanager.GetResByCode("null", "T_BJ_DeepPlate");
                        deep_plane.Values[deep_plane.CountX, deep_plane.CountY] = deep_plane;
                    }
                    System.Diagnostics.Debug.Assert(deep_plane != null);
                    if (deep_plane.FindCode(gel_step.MixCode, false) == false)
                    {
                        deep_plane.AddCode(gel_step.MixCode);
                    }
                    action_point.x = deep_plane.InjectorX;
                    action_point.y = deep_plane.InjectorY;
                    action_point.z = deep_plane.InjectorZ;
                }
                else if (action_point.type == TestStepEnum.SpuLiquid)
                {
                    //查找gel卡
                    ResInfoData gel_seat = resmanager.GetResByCode(exp_pack.GetGelMask(), "T_BJ_GelSeat");
                    System.Diagnostics.Debug.Assert(gel_seat != null);
                    action_point.x        = gel_seat.InjectorX;
                    action_point.y        = gel_seat.InjectorY;
                    action_point.z        = gel_seat.InjectorZ;
                    action_point.tube_gap = gel_seat.InjectorGap;
                }
            }
            return(action_point);
        }
Beispiel #7
0
 public LogicAction(T_GelStep action)
 {
     gel_step = action;
 }
Beispiel #8
0
 public bool DeleteGelStep(T_GelStep t_GelStep)
 {
     return(DeleteGelStepByIDs(t_GelStep.ID.ToString()));
 }