//排序 public void UpDataAction() { lock (mylock) { //融合两个试验 foreach (var package in experiment_package_list) { if (package.is_used_gel && package.action_list.Count != 0 && package.ren_fen != package.GetCurRenFen()) { var exp_pack_tem = GetCombinationExpPackage(package); if (exp_pack_tem != null) { if (exp_pack_tem.samples_barcode.Count == 1) { package.Combination(exp_pack_tem); } else { exp_pack_tem.Combination(package); } } } } ClsAction(); //把交叉配血卡的动作ID更新 //foreach (var package in experiment_package_list) //{ // if (package.is_crossmatching) package.UpDataCrossMatchingSetpIndex(); //} inj_action_list = new List <T_GelStep>(); List <List <T_GelStep> > action_group = new List <List <T_GelStep> >(); int index = 0; int max_goup_size = 12; //按有孵育的就组 experiment_package_list = experiment_package_list.OrderByDescending(a => a.sort_index).ToList(); //12个一组 int group_last_gel_test_id = -1; for (int i = 0; i < experiment_package_list.Count; i++) { //不同卡为一组 if (experiment_package_list[i].is_jyjs == false) { if (index % max_goup_size == 0 || (group_last_gel_test_id != experiment_package_list[i].gel_test_id)) { action_group.Add(new List <T_GelStep>()); index = 1; } else { index++; } action_group[action_group.Count - 1] = action_group[action_group.Count - 1].Concat(experiment_package_list[i].action_list).ToList(); group_last_gel_test_id = experiment_package_list[i].gel_test_id; } } for (int i = 0; i < action_group.Count; i++) { action_group[i] = action_group[i].OrderBy(u => u.StepIndex).ToList(); inj_action_list = inj_action_list.Concat(action_group[i]).ToList(); } //试剂(最多两个针头加样,分配,把脱针去掉,把加样去掉,把容量合并) //查找连续试剂(如果超过三个就合并) AgentiaCombination(inj_action_list, 0); SlysCombination(inj_action_list, 0); //交叉配血合并 CrossMatchingCombination(inj_action_list, 0); //破空器返回 int pier_y = 0; var pier_device = new ActionDevice(piercerDevice); pier_device.GetRealY(ref pier_y); if (pier_y != 0 && inj_action_list.Count != 0 && inj_action_list[0].StepClass != TestStepEnum.KaiKongGel) { var pier_back = MoveTo.create(piercerDevice, 3000, -1, 0, -1); pier_back.runAction(); } } }
//排序 public void UpDataAction() { lock (mylock) { //融合两个试验 foreach (var package in experiment_package_list) { if (package.is_used_gel && package.action_list.Count != 0 && package.ren_fen != package.GetCurRenFen()) { var exp_pack_tem = GetCombinationExpPackage(package); if (exp_pack_tem != null) { if (exp_pack_tem.action_list.Count != 1) { package.Combination(exp_pack_tem); } else { exp_pack_tem.Combination(package); } } } } ClsAction(); inj_action_list = new List <T_GelStep>(); List <List <T_GelStep> > action_group = new List <List <T_GelStep> >(); int index = 0; int max_goup_size = 12; //加载卡打孔12个一组 for (int i = 0; i < experiment_package_list.Count; i++) { if (experiment_package_list[i].is_jyjs == false) { if (index % max_goup_size == 0) { action_group.Add(new List <T_GelStep>()); } var loadgel_list = experiment_package_list[i].action_list.Where(item => item.StepClass == TestStepEnum.LoadGel); var kaikonggel_list = experiment_package_list[i].action_list.Where(item => item.StepClass == TestStepEnum.KaiKongGel); action_group[action_group.Count - 1] = action_group[action_group.Count - 1].Concat(loadgel_list).ToList(); action_group[action_group.Count - 1] = action_group[action_group.Count - 1].Concat(kaikonggel_list).ToList(); index++; } } //加样动作4个一组 index = 0; max_goup_size = 4; for (int i = 0; i < experiment_package_list.Count; i++) { if (experiment_package_list[i].is_jyjs == false) { if (index % max_goup_size == 0) { action_group.Add(new List <T_GelStep>()); } var jyact_list = experiment_package_list[i].action_list.Where(item => item.StepClass == TestStepEnum.JYJS).ToList(); int jyjs_index = jyact_list.Count != 0?jyact_list[0].StepIndex:1000; var nomoact_list = experiment_package_list[i].action_list.Where(item => item.StepIndex < jyjs_index && item.StepClass != TestStepEnum.LoadGel && item.StepClass != TestStepEnum.KaiKongGel); action_group[action_group.Count - 1] = action_group[action_group.Count - 1].Concat(nomoact_list).ToList(); index++; } } //加样后动作12个一组 index = 0; max_goup_size = 12; for (int i = 0; i < experiment_package_list.Count; i++) { if (experiment_package_list[i].is_jyjs == false) { if (index % max_goup_size == 0) { action_group.Add(new List <T_GelStep>()); } var jyact_list = experiment_package_list[i].action_list.Where(item => item.StepClass == TestStepEnum.JYJS).ToList(); int jyjs_index = jyact_list.Count != 0 ? jyact_list[0].StepIndex : 1000; var nomoact_list = experiment_package_list[i].action_list.Where(item => item.StepIndex >= jyjs_index && item.StepClass != TestStepEnum.LoadGel && item.StepClass != TestStepEnum.KaiKongGel); action_group[action_group.Count - 1] = action_group[action_group.Count - 1].Concat(nomoact_list).ToList(); index++; } } for (int i = 0; i < action_group.Count; i++) { action_group[i] = action_group[i].OrderBy(u => u.StepIndex).ToList(); inj_action_list = inj_action_list.Concat(action_group[i]).ToList(); } //试剂(最多两个针头加样,分配,把脱针去掉,把加样去掉,把容量合并) //查找连续试剂(如果超过三个就合并) AgentiaCombination(inj_action_list, 0); //破空器返回 int pier_y = 0; var pier_device = new ActionDevice(piercerDevice); pier_device.GetRealY(ref pier_y); if (pier_y != 0 && inj_action_list.Count != 0 && inj_action_list[0].StepClass != TestStepEnum.KaiKongGel) { var pier_back = MoveTo.create(piercerDevice, 3000, -1, 0, -1); pier_back.runAction(); } } }