/**
* 明細のリスト項目取得する。
*
* Time:2012/11/02
* @param String kokyakuId (ログイン者のお客様ID)
* @param String nahinSaki (画面.納品先)
* @param String hacyuSingiIraiKbv(画面.発注審議依頼)
* @param String hacyuTetudukiKbv(画面.発注手続)
* @param String hacyuKakuninKbv(画面.発注確認)
* @param String hininKbv(画面.否認)
* @param String hacyuDateFm (画面.発注日開始)
* @param String hacyuDateTo (画面.発注日終了)
* @author CAOHL
* @return TH_HACHU_EXTList 発注明細データ
*/
@SuppressWarnings("unchecked")
public List<TH_HACHU_M_EXT> getMeisai(String kokyakuID
,String nahinSaki
,String hacyuSingiIraiKbv
,String hacyuTetudukiKbv
,String hacyuKakuninKbv
,String hininKbv
,String hacyuDateFm
,String hacyuDateTo) {
// HQL文
String hql="select t1.HACHU_CDV \"hachu_Cdv\", " + //発注番号
"t1.JYOKYO_FLG \"jyokyo_Flg\", " + //状況フラグ
"t1.SHONIN_KBV \"shonin_Kbv\", " + //審議区分
"to_char(t1.HACHU_YMD,'YYYY/MM/DD') \"hachu_Ymd\", " + //発注日
"t2.LINE_NON \"line_Non\", " + //行番号
"t2.SURYO_NUM \"suryo_Num\", " + //注文数(数量)
"to_char(t2.NOHIN_YMD,'YYYY/MM/DD') \"nohin_Ymd\", " + //見込納期
"t3.TANTO_NMV \"shingi_Nmv\", " + //審議者名
"t4.KAISHA_NMV \"kaisha_Nmv\", " + //納品先--会社名
"t4.BUSHO_NMV \"busho_Nmv\", " + //納品先--部署名
"t4.KTANTO_NMV \"ktanto_Nmv\", " + //納品先--担当者
"m1.SHOHIN_NMV \"shohin_Nmv\", " + //商品名
"m1.MAKER_NMV \"maker_Nmv\", " + //メーカー
"m1.KATA_NOV \"kata_Nov\", " + //型番
"m1.TEIKA_KIN \"teika_Kin\", " + //定価
"m1.HACHUTANI_NMV \"hachutani_Nmv\", " + //注文数(発注受注単位)
"m1.TEIKA_KIN * t2.SURYO_NUM AS \"subTotal\", " + //小計(*)
"m1.BIKO_NMV \"biko_Nmv\" "; //備考
// HQL文にFrom条件を追加
StringBuffer hqlStr = new StringBuffer();
hqlStr.append(" from TH_HACHU t1, TH_HACHU_M t2,TH_IDJYOHO t3, M_SHOHIN m1, TH_CHOKUSOU t4 where");
hqlStr.append(" t1.HACHU_CDV = t2.HACHU_CDV");
hqlStr.append(" and t1.KOKYAKU_ID=t4.KOKYAKU_ID ");
hqlStr.append(" and t1.SHINGI_ID=t3.KOKYAKU_ID(+) ");
hqlStr.append(" and t1.NOHINTO_CDVS= t4.SITEN_CDV");
hqlStr.append(" and t2.SHOHIN_CDV = m1.SHOHIN_CDV");
hqlStr.append(" and t1.CANCEL_FLG = '0'");
hqlStr.append(" and t1.KARI_FLG = '0'");
hqlStr.append(" and t2.TORIKESHI_FLG ='0'");
hqlStr.append(" and t1.KOKYAKU_ID = :kokyaku_id");
hqlStr.append(" and (t1.NOHINTO_CDVS = :nahinSaki or :nahinSaki is null) ");
hqlStr.append(" and (");
if("true".equals(hacyuSingiIraiKbv)
||"true".equals(hacyuTetudukiKbv)
||"true".equals(hacyuKakuninKbv)
||"true".equals(hininKbv)){
boolean orFlag = false;
//hacyuSingiIraiKbvが発注審議依頼チェックボックスをクリックした場合
if("true".equals(hacyuSingiIraiKbv)){
hqlStr.append(" (t1.JYOKYO_FLG = '0'");
hqlStr.append(" and t1.SHONIN_KBV = '0')");
orFlag = true;
}
//hacyuTetudukiKbvが発注処理チェックボックスをクリックした場合
if("true".equals(hacyuTetudukiKbv)){
if(orFlag){
hqlStr.append(" or ");
}
orFlag = true;
hqlStr.append(" ((T1.JYOKYO_FLG= '0' ");
hqlStr.append(" and T1.SHONIN_KBV='1') ");
hqlStr.append(" OR (T1.JYOKYO_FLG= '0' ");
hqlStr.append(" and T1.SHONIN_KBV='9')) ");
}
//hacyuKakuninKbvが発注確定チェックボックスをクリックした場合
if("true".equals(hacyuKakuninKbv)){
if(orFlag){
hqlStr.append(" or ");
}
orFlag = true;
hqlStr.append(" T1.JYOKYO_FLG IN ( '1','2' ) ");
}
//hininKbvが否認チェックボックスをクリックした場合
if("true".equals(hininKbv)){
if(orFlag){
hqlStr.append(" or ");
}
orFlag = true;
hqlStr.append(" (t1.JYOKYO_FLG = '0'");
hqlStr.append(" and t1.SHONIN_KBV = '2') ");
}
}else{
hqlStr.append(" 1=0");
}
hqlStr.append(" )");
hqlStr.append(" and (to_date(T1.HACHU_YMD) >=to_date(:hacyuDateFm) or :hacyuDateFm is null) ");
hqlStr.append(" and (to_date(T1.HACHU_YMD) <=to_date(:hacyuDateTo) or :hacyuDateTo is null) ");
hqlStr.append(" order by t1.hachu_Cdv,t2.LINE_NON");
// 抽出結果のデータリストをリターン
String sql = hql + hqlStr;
return this.getHibernateTemplate().getSessionFactory()
.getCurrentSession().createSQLQuery(sql.toString())
.setString("kokyaku_id", kokyakuID)
.setString("nahinSaki", nahinSaki)
.setString("hacyuDateFm", hacyuDateFm)
.setString("hacyuDateTo", hacyuDateTo)
.setResultTransformer(Transformers.aliasToBean(TH_HACHU_M_EXT.class))
.list();
}