2017-07-16 4 views
-3

を満たしている場合には壊れ、ストリーミングJavaオブジェクトのリストを、条件が私はJavaオブジェクトのリストをストリーミングについての質問があり、条件が満たしている場合破る

私は

以下のような実体の市を持っています
@Entity 
public class City { 

private Country country; 
private ClosestCity closestCity; 
private NearestCity nearestCity; 
private SisterCity sisterCity; 

} 

ClosestCity、NearestCityおよびSisterCityは、エンティティ都市に外部キーを持つ都市です。 私はさまざまな都市にある医師のリストを持っています。患者の都市に最も近い医者に患者を割り当てたい、そうでなければ最も近い都市に割り当てる、そうでなければ姉妹都市に割り当てる上記の質問が満たされていない、待機リストに患者を置く。 以下は私の割り当て方法と動作しない方法です。

public boolean allocateDoctorToPatient(Patient patient) { 

    Practitioner closestPractitioner = null; 
    List<Practitioner> practitioners = practitionerService.findAll().get(); 
    for (Practitioner p : practitioners) { 
     //same city 
     if (closestPractitioner != null) { 
      for (Practitioner p1 : practitioners) { 

       if (patient.getCity().equals(p1.getCity())) { 
        closestPractitioner = p1; 
        break; 
       } 
      } 
     } 
     //loops to find closest city 
     else if (closestPractitioner == null) { 
      for (Practitioner p2 : practitioners) { 

       if (patient.getCity().equals(p2.getCity().getClosestCity())) { 
        closestPractitioner = p2; 
        break; 
       } 
      } 
     } 
     //loops to find nearest city 
     else if (closestPractitioner == null) { 
      for (Practitioner p3 : practitioners) { 

       if (patient.getCity().equals(p3.getCity().getNearestCity())) { 
        closestPractitioner = p3; 
        break; 
       } 
      } 
     } 
     //loops to find sister city 
     else if(closestPractitioner == null) { 
      for (Practitioner p4 : practitioners) { 

       if (patient.getCity().equals(p4.getCity().getSisterCity())) { 
        closestPractitioner = p4; 
        break; 
       } 
      } 
     } 



} 
    if (closestPractitioner != null) { 
     Allocate allocate =new Allocate(); 

     allocate.setPatient(patient); 
     allocate.setPractitioner(closestPractitioner) 
     save(allocate); 

    } 
    else { 
     WaitingList waitingList=new WaitingList(); 
     waitingList.setPatient(patient); 
     waitingListService.save(waitingList); 
    } 

    return closestPractitioner != null; 
} 
+2

ようこそスタックオーバーフロー!あなたは誰かにあなたのためのコードを書くよう求めているようです。 Stack Overflowは、コード作成サービスではなく、Q&Aサイトです。効果的な質問を書く方法については、こちらをご覧ください(https://stackoverflow.com/help/how-to-ask)。 –

+1

質問は患者の都市に医者がいる最も近い都市を見つけることに過ぎないと思いませんか?それが事実なら、最も近い都市、姉妹都市と待機リストは意味をなしません...何かが見つからない限り –

+0

最も近い施術者を見つける別の方法を作成し、 'break'の代わりに' return'を使い ' if分岐が完全に – Clashsoft

答えて

0

アルゴリズムを使用してください:患者のためのaccaptebleある都市の

  1. のGetリストを。

  2. ステップ1から都市に位置しているプラ​​クティショナエンティティの取得リスト(使用HQLまたは基準API)

  3. 患者に最も近いプラクティショナーを選びました。

関連する問題