/**
 * @(#)file    SiteExplanBiz.java
 * @(#)author  Son Hyung Min 
 * @(#)version 1.0
 * @(#)date    2014-06-23
 * @(#)since   JDK 1.4.2
 */
package kr.co.udapsoft.ebid.supplier.portal.bid.biz;




import java.sql.Connection;

import oracle.toplink.internal.ox.StrBuffer;
import kr.co.hsnc.common.base.WAFLogger;
import kr.co.hsnc.common.sql.Row;
import kr.co.hsnc.common.sql.RowSet;
import kr.co.hsnc.common.sql.RowSetImpl;
import kr.co.hsnc.common.sql.WAFSQLException;
import kr.co.hsnc.common.sql.persistent.Persistent;
import kr.co.hsnc.common.sql.persistent.PersistentImpl;
import kr.co.hsnc.common.sql.search.Search;
import kr.co.hsnc.common.sql.search.SearchImpl;
import kr.co.hsnc.common.sql.util.RowSetUtility;
import kr.co.hsnc.common.util.ValueObject;
import kr.co.udapsoft.common.code.CommCodeManager;
import kr.co.udapsoft.ebid.buyer.common.file.FileManager;

import com.udapsoft.modular.web.ibsheet7.IBSheet7Factory;
import com.udapsoft.modular.web.ibsheet7.util.IBSheet7Utils;
import com.udapsoft.waf.system.Biz;
import com.udapsoft.waf.system.HandlerStorage;

   
public class SiteExplanBiz extends Biz {

	public SiteExplanBiz(HandlerStorage storage) {
		super(storage);
	}

	public void doBiz() throws Exception {
        ValueObject user = new ValueObject();
		if(storage.compareEvent("SHEET_SELECT")){
			params.set("sheet1", getBoardList(params));
			storage.addObject("ibsheet7Data", IBSheet7Factory.createIBSheet7(params, storage.request));
		}else if(storage.compareEvent("FORM_SELECT")){
	            user = getOrderReqeustValueObject();
	            storage.addValueObject("Order", user);
	            /**		파일 목록 조회			 **/
		        storage.addValueObject(user.get("DOC_ETC_IN"), getfilelist(user.get("DOC_ETC_IN"),params.get("DEMANDED_ID"),user.get("DOC_ETC_IN")));
		        storage.addValueObject(user.get("DOC_ETC_OUT"), getfilelist(user.get("DOC_ETC_OUT"),params.get("DEMANDED_ID"),user.get("DOC_ETC_OUT")));
		}else if(storage.compareEvent("FORM_UPDATE")){
			//현설 참석의사 저장
			boolean success = false;
			success = save();
		   super.storage.setSuccess(success);
		   if(success)
			   storage.addObject("ibsheet7Data", IBSheet7Factory.createIBSheet7(params, storage.request));
		}
	}
	
	private ValueObject getfilelist(String filegb,String id,String returnid){
		ValueObject vo = new ValueObject();
		RowSet rowSet = FileManager.getFileList(filegb, id);
		String str="";
	        for(int i=0;i<rowSet.size();i++){
	        	Row row=rowSet.getRow(i);
	        	str += (i+1)+" : "+row.get("FILE_NAME")+" ("+ row.get("FILE_SIZE")+")";
	        	if(i+1!=rowSet.size()){
	        		str +="\r\n";
	        	}
	        }
	        vo.set(returnid, str);
		return vo;
	}

	/**
	 * 발주의뢰(외주) 접수를 검색하여 리턴
	 * @param Params
	 * @return
	 */
	private RowSet getBoardList(ValueObject param) {
		Search search = new SearchImpl();
        RowSet rowSet = new RowSetImpl();
        StrBuffer sqlstr = new StrBuffer();
        try{
        	sqlstr.append(" (SELECT A.BID_NO																				\n");
        	sqlstr.append("      ,A.BID_DEG																					\n");
        	sqlstr.append("      ,A.DEMANDED_TITLE																		\n");
        	sqlstr.append("      ,A.BID_MASTER_NM																		\n");
        	sqlstr.append("      ,TO_CHAR(A.SITEDESCDATE,'YYYY-MM-DD HH24:MI') AS SITEDESCDATE	\n");
        	sqlstr.append("      ,TO_CHAR(A.BID_TO_DT,'YYYY-MM-DD HH24:MI') AS BID_TO_DT			\n");
        	sqlstr.append("      ,B.SITE_ATTEND_YN																		\n");
        	sqlstr.append("      ,NVL(B.SITEPARTI_YN,'-') AS SITEPARTI_YN										\n");
        	sqlstr.append("      ,A.STATUS_CD																				\n");
        	sqlstr.append("      ,A.DEMANDED_ID																			\n");
        	sqlstr.append("      ,A.DEMANDED_KIND																		\n");
        	sqlstr.append("   FROM BID_MASTER A, BID_SUPP B														\n");
        	sqlstr.append("  	WHERE A.BID_NO=B.BID_NO(+)															\n");
        	sqlstr.append("  	AND A.BID_DEG=B.BID_DEG(+)															\n");
        	sqlstr.append("    AND B.VENDOR_CD(+)= '"+params.get("VENDOR_CD")+"'							\n");
        	sqlstr.append("  	AND A.STATUS_CD IN ('03','04')															\n");
        	sqlstr.append("    AND A.CMPT_CD = '01'																		\n");
        	sqlstr.append("    AND A.ONBID_YN = 'Y'																		\n");
        	sqlstr.append("    AND A.NOTI_DY <= TO_CHAR(SYSDATE,'YYYYMMDD')								\n");
        	sqlstr.append("    AND (A.OUT_ITEM_CD IN (SELECT OUT_ITEM_CD FROM SUPP_OUT_ITEM WHERE CORP_ID =  '"+params.get("VENDOR_CD")+"')							\n");
        	sqlstr.append("    OR A.MATERIAL_GB IN (SELECT SC.PARENT_LEVEL FROM SUPP_PUR_ITEM SA , PMM_MATERIALGROUP_V SB , PMM_MATERIALGROUP_V SC WHERE SA.KIND_SMALL=SB.MATERIALGROUP  AND SB.PARENT_LEVEL = SC.MATERIALGROUP AND SA.CORP_ID =  '"+params.get("VENDOR_CD")+"' GROUP BY SC.PARENT_LEVEL))							\n");
        	if(!param.get("P_BID_MASTER_NM").isEmpty())
        		sqlstr.append("   AND A.BID_MASTER_NM LIKE '%'|| '"+param.get("P_BID_MASTER_NM")+"' ||'%'																						\n");
        	if(!param.get("SITEDESC_FROM_DT").isEmpty())
        	    sqlstr.append("   AND A.SITEDESCDATE >  TO_DATE('"+param.get("SITEDESC_FROM_DT")+"'||'000000','YYYY-MM-DDHH24MISS') 										\n");
        	if(!param.get("SITEDESC_TO_DT").isEmpty())
        	    sqlstr.append("   AND A.SITEDESCDATE <  TO_DATE('"+param.get("SITEDESC_TO_DT")+"'||'235959','YYYY-MM-DDHH24MISS')												\n");
        	
        	if(!param.get("P_STATUS").isEmpty())
        		sqlstr.append("   AND A.STATUS_CD = '"+param.get("P_STATUS")+"'																															\n");
        	sqlstr.append(" UNION ALL																							\n");
        	
        	sqlstr.append(" SELECT A.BID_NO																				\n");
        	sqlstr.append("      ,A.BID_DEG																					\n");
        	sqlstr.append("      ,A.DEMANDED_TITLE																		\n");
        	sqlstr.append("      ,A.BID_MASTER_NM																		\n");
        	sqlstr.append("      ,TO_CHAR(A.SITEDESCDATE,'YYYY-MM-DD HH24:MI') AS SITEDESCDATE	\n");
        	sqlstr.append("      ,TO_CHAR(A.BID_TO_DT,'YYYY-MM-DD HH24:MI') AS BID_TO_DT			\n");
        	sqlstr.append("      ,B.SITE_ATTEND_YN																		\n");
        	sqlstr.append("      ,NVL(B.SITEPARTI_YN,'-') AS SITEPARTI_YN										\n");
        	sqlstr.append("      ,A.STATUS_CD																				\n");
        	sqlstr.append("      ,A.DEMANDED_ID																			\n");
        	sqlstr.append("      ,A.DEMANDED_KIND																		\n");
        	sqlstr.append("   FROM BID_MASTER A																			\n");
        	sqlstr.append("      , BID_SUPP B																					\n");
        	sqlstr.append("  WHERE A.BID_NO=B.BID_NO																	\n");
        	sqlstr.append("    AND A.BID_DEG=B.BID_DEG																\n");
        	sqlstr.append("    AND B.VENDOR_CD= '"+params.get("VENDOR_CD")+"'								\n");
        	sqlstr.append("    AND A.SITEDESC_FLAG = 'Y'																\n");
        	sqlstr.append("    AND A.ONBID_YN = 'Y'																		\n");
        	sqlstr.append("    AND A.NOTI_DY <= TO_CHAR(SYSDATE,'YYYYMMDD')								\n");
        	sqlstr.append("    AND A.CMPT_CD <> '01'																		\n");	
        	sqlstr.append(" AND A.STATUS_CD IN ('03','04')																\n");
        	if(!param.get("P_BID_MASTER_NM").isEmpty())
        		sqlstr.append("   AND A.BID_MASTER_NM LIKE '%'|| '"+param.get("P_BID_MASTER_NM")+"' ||'%'																						\n");
        	if(!param.get("SITEDESC_FROM_DT").isEmpty())
        	    sqlstr.append("   AND A.SITEDESCDATE >  TO_DATE('"+param.get("SITEDESC_FROM_DT")+"'||'000000','YYYY-MM-DDHH24MISS') 										\n");
        	if(!param.get("SITEDESC_TO_DT").isEmpty())
        	    sqlstr.append("   AND A.SITEDESCDATE <  TO_DATE('"+param.get("SITEDESC_TO_DT")+"'||'235959','YYYY-MM-DDHH24MISS')												\n");
        	
        	if(!param.get("P_STATUS").isEmpty())
        		sqlstr.append("   AND A.STATUS_CD = '"+param.get("P_STATUS")+"'																															\n");
        	sqlstr.append(" )  ORDER BY SITEDESCDATE DESC																																						\n");
			search.setStatement(sqlstr.toString());
            rowSet = search.execute();
        }catch (WAFSQLException se) {
            super.doException(se);
            this.storage.setSuccess(false);  
            this.storage.setMessage(se.getMessage());
            storage.setDetailMessage(se);
        }finally{    
            if(rowSet == null)rowSet = new RowSetImpl();
        }
        return rowSet;
	}
	

	
	/**
	 * 발주의뢰(외주) 접수 상세를 검색하여 리턴
	 * @param Params
	 * @return
	 */
	private ValueObject getOrderReqeustValueObject() {

		Search search = new SearchImpl();
        RowSet rowSet = new RowSetImpl();
        ValueObject valueobject = null;
     //   String sqlstr = "";
        StrBuffer sqlstr = new StrBuffer();
        try{
        	sqlstr.append("       SELECT A.BID_NO,                   \n");
        	sqlstr.append("              A.BID_DEG,                   \n");
        	sqlstr.append("              A.DEMANDED_ID,                   \n");
        	sqlstr.append("              A.DEMANDED_NO,                   \n");
        	sqlstr.append("              A.DEPT_CD,                   \n");
        	sqlstr.append("              A.DEPT_NM,                   \n");
        	sqlstr.append("              A.DEMANDED_TITLE,                   \n");
        	sqlstr.append("              A.DEMANDED_KIND,                   \n");
        	sqlstr.append("              A.DEMANDED_DATE,                   \n");
        	sqlstr.append("              TO_CHAR(TO_DATE(A.DEMANDED_DATE,'YYYYMMDD'),'YYYY-MM-DD') AS DEMANDED_DATE_NM,                   \n");
        	sqlstr.append("              A.REQUEST_DATE,                   \n");
        	sqlstr.append("              A.REQ_DEPT_CD,                   \n");
        	sqlstr.append("              A.REQ_DEPT_NM,                   \n");
        	sqlstr.append("              A.EMP_NO,                   \n");
        	sqlstr.append("              A.EMP_NM,                   \n");
        	sqlstr.append("              A.PAY_ITEM,                   \n");
        	sqlstr.append("              F_GET_PAY_ITEM_VIEW(A.PAY_ITEM,A.COST_CODE,A.COST_TYPE,A.DEPT_CD) AS PAY_ITEM_NM,                   \n");
        	sqlstr.append("              A.COST_CODE,                   \n");
        	sqlstr.append("              A.COST_TYPE,                   \n");
        	sqlstr.append("              A.CONT_AMT,                   \n");
        	sqlstr.append("              A.ACT_AMT,                   \n");
        	sqlstr.append("              A.ACT_RATE,                   \n");
        	sqlstr.append("              A.RECEIPT_DATE,                   \n");
        	sqlstr.append("              TO_CHAR(A.RECEIPT_DATE,'YYYY-MM-DD') AS RECEIPT_DATE_NM,                   \n");
        	sqlstr.append("              A.ONBID_YN,                   \n");
        	sqlstr.append("              F_GET_CODE_NAME('ONBID',ONBID_YN) AS ONBID_YN_NM,                   \n");
        	sqlstr.append("              A.CMPT_CD,                   \n");
        	sqlstr.append("              F_GET_CODE_NAME('CMPT_CD',A.CMPT_CD) AS CMPT_NM,                   \n");
        	sqlstr.append("              A.SUCC_CD,                   \n");
        	sqlstr.append("              F_GET_CODE_NAME('SUCC_CD',A.SUCC_CD) AS SUCC_NM,                   \n");
        	sqlstr.append("              A.NOTI_DY,                   \n");
        	sqlstr.append("              TO_CHAR(TO_DATE(A.NOTI_DY,'YYYYMMDD'),'YYYY-MM-DD') AS NOTI_DY_NM,                   \n");
        	sqlstr.append("              A.SITEDESC_FLAG,                   \n");
        	sqlstr.append("              DECODE(A.SITEDESC_FLAG,'Y','예','N','아니오','') AS SITEDESC_FLAG_NM,                   \n");
        	sqlstr.append("              A.SITEDESCCHRGPRSNID,                   \n");
        	sqlstr.append("              F_GET_USER_NM(A.SITEDESCCHRGPRSNID) AS SITEDESCCHRGPRSNNM,                   \n");
        	sqlstr.append("              A.SITEDESC_CRG_NM,                   \n");
        	sqlstr.append("              A.SITEDESCTELNO,                   \n");
        	sqlstr.append("              A.SITEDESCEMAIL,                   \n");
        	sqlstr.append("              A.SITEDESCDATE,                   \n");
        	sqlstr.append("              TO_CHAR(A.SITEDESCDATE,'YYYY-MM-DD HH24:MI') AS SITEDESCDATE_NM,                   \n");
        	sqlstr.append("              A.SITEDESCPLACE,                   \n");
        	sqlstr.append("              A.BID_FROM_DT,                   \n");
        	sqlstr.append("              TO_CHAR(A.BID_FROM_DT,'YYYY-MM-DD HH24:MI') AS BID_FROM_DT_NM,                   \n");
        	sqlstr.append("              A.BID_TO_DT,                   \n");
        	sqlstr.append("              TO_CHAR(A.BID_TO_DT,'YYYY-MM-DD HH24:MI') AS BID_TO_DT_NM,                   \n");
        	sqlstr.append("              A.PUREMPNO,                   \n");
        	sqlstr.append("              F_GET_USER_NM(A.PUREMPNO) AS PUREMPNM,                   \n");
        	sqlstr.append("              A.PO_EMPNM,                   \n");
        	sqlstr.append("              A.OPEN_EMPNM,                   \n");
        	sqlstr.append("              A.OPEN_EMPID,                   \n");
        	sqlstr.append("              A.OPEN_DT,                   \n");
        	sqlstr.append("              A.TBE_FLAG,                   \n");
        	sqlstr.append("              DECODE(A.TBE_FLAG,'Y','예','N','아니오','') AS TBE_FLAG_NM,                   \n");
        	sqlstr.append("              A.DELIVERY_CONDITION,                   \n");
        	sqlstr.append("              F_GET_CODE_NAME('PUR_LEAD_GB',A.DELIVERY_CONDITION) AS DELIVERY_CONDITION_NM,	\n");
        	sqlstr.append("              A.DELIVERY_PLACE,                   \n");
        	sqlstr.append("              A.INNER_REMARKS,                   \n");
        	sqlstr.append("              A.OUTER_REMARKS,                   \n");
        	sqlstr.append("              A.ATT_ID,                   \n");
        	sqlstr.append("              A.BID_APP_DATE,                   \n");
        	sqlstr.append("              A.BID_APP_NO,                   \n");
        	sqlstr.append("              A.CONT_APP_DATE,                   \n");
        	sqlstr.append("              A.CONT_APP_NO,                   \n");
        	sqlstr.append("              A.DOC_ETC_IN,                   \n");
        	sqlstr.append("              A.DOC_ETC_OUT,                   \n");
        	sqlstr.append("              A.BID_MASTER_NM,                   \n");
        	sqlstr.append("              A.POSTPONE_REASON,                   \n");
        	sqlstr.append("              A.CANCEL_REASON,                   \n");
        	sqlstr.append("              A.MODIFY_REASON,                   \n");
        	sqlstr.append("              A.FIB_REASON,                   \n");
        	sqlstr.append("              A.OUT_ITEM_CD,                   \n");
        	sqlstr.append("              GET_OUT_ITEM_NM(A.OUT_ITEM_CD) AS OUT_ITEM_NM,                   \n");
        	sqlstr.append("              A.STATUS_CD,                   \n");
        	sqlstr.append("              DECODE(A.STATUS_CD,'04','견적설명회 완료',F_GET_CODE_NAME('BID_STATUS_CD',A.STATUS_CD)) AS STATUS_NM,                   \n");
        	sqlstr.append("              A.DIV_PO_YN,                   \n");
        	sqlstr.append("              A.CURRENCY_GB,                   \n");
        	sqlstr.append("              F_GET_CODE_NAME('911',A.CURRENCY_GB) AS CURRENCY_GB_NM,                   \n");
        	sqlstr.append("              A.CURRENCY_GB_YN,                   \n");
        	sqlstr.append("              A.PBC_CBE_TYPE_CD,                   \n");
        	sqlstr.append("              A.PBC_INSTALL_YN,                   \n");
        	sqlstr.append("              A.PBC_COMMISS_YN,                   \n");
        	sqlstr.append("              A.PBC_SPETOOL_YN,                   \n");
        	sqlstr.append("              A.PBC_TEST_YN,                   \n");
        	sqlstr.append("              A.PBC_DOC_YN,                   \n");
        	sqlstr.append("              A.PBC_PACK_YN,                   \n");
        	sqlstr.append("              A.PBC_LANDTRAN_YN,                   \n");
        	sqlstr.append("              A.DELIVERY_CONDITION_YN,                   \n");
        	sqlstr.append("              A.PBC_FEE_YN,                   \n");
        	sqlstr.append("              A.PBC_OPTION_COMMENT,                   \n");
        	sqlstr.append("              A.PBC_OPTION_YN,                   \n");
        	sqlstr.append("              A.PAY_CON_RATE,                   \n");
        	sqlstr.append("              A.CBC_DAMAGE_RATE,                   \n");
        	sqlstr.append("              A.CBC_DAMAGE_MAXRATE,                   \n");
        	sqlstr.append("       		 F_GET_CODE_NAME('LIQ_DMG_CD', A.CBC_DAMAGE_CD) AS CBC_DAMAGE_NM,			\n");
		    sqlstr.append("       		 A.PBC_DEFECT_CONDI2,			\n");
		    sqlstr.append("       		 A.CBC_DERECT_TERM_CD2,			\n");
		    sqlstr.append("       		 A.CBC_DEFECT_DAY2,				\n");
        	sqlstr.append("              A.CBC_FIRST_RATE,                   \n");
        	sqlstr.append("              A.PBC_FIRST_CONDI,                   \n");
        	sqlstr.append("              A.CPC_MID_RATE,                   \n");
        	sqlstr.append("              A.PBC_MID_CONDI,                   \n");
        	sqlstr.append("              A.PBC_REST_RATE,                   \n");
        	sqlstr.append("              A.PBC_REST_CONDI,                   \n");
        	sqlstr.append("              A.PBC_FRSTGUAR_RATE,                   \n");
        	sqlstr.append("              A.PBC_FRSTGUAR_CONDI,                   \n");
        	sqlstr.append("              A.CONTFUL_RATE,                   \n");
        	sqlstr.append("              A.CONTFUL_CONDI,                   \n");
        	sqlstr.append("              A.WARR_RATE,                   \n");
        	sqlstr.append("              A.WARR_CONDI,                   \n");
        	sqlstr.append("              A.PBC_DEFECT_CONDI,                   \n");
        	sqlstr.append("              A.CBC_DEFECT_DAY,                   \n");
        	sqlstr.append("              A.CBC_DERECT_TERM_CD,                   \n");
        	sqlstr.append("              F_GET_CODE_NAME('CBC_DERECT_TERM_CD',A.CBC_DERECT_TERM_CD) AS CBC_DERECT_TERM_NM,			\n");
        	sqlstr.append("              A.DELI_FROM_DY,                   \n");
        	sqlstr.append("              TO_CHAR(TO_DATE(A.DELI_FROM_DY,'YYYYMMDD'),'YYYY-MM-DD') AS DELI_FROM_DY_NM,                   \n");
        	sqlstr.append("              A.DELI_TO_DY,                   \n");
        	sqlstr.append("              TO_CHAR(TO_DATE(A.DELI_TO_DY,'YYYYMMDD'),'YYYY-MM-DD') AS DELI_TO_DY_NM,                   \n");
        	sqlstr.append("              A.OBC_CONT_TYPE_CD,                   \n");
        	sqlstr.append("              F_GET_CODE_NAME('CONT_TYPE',A.OBC_CONT_TYPE_CD) AS OBC_CONT_TYPE_NM,                   \n");
        	sqlstr.append("              A.OBC_FRST_CASH_RATE,                   \n");
        	sqlstr.append("              A.OBC_MID_CASH_RATE,                   \n");
        	sqlstr.append("              A.OBC_MID_BILL_RATE,                   \n");
        	sqlstr.append("              A.OBC_FIN_CASH_RATE,                   \n");
        	sqlstr.append("              A.OBC_FIN_BILL_RATE,                   \n");
        	sqlstr.append("              A.OBC_FRST_CONDI,                   \n");
        	sqlstr.append("              A.OBC_MID_PAYDAY,                   \n");
        	sqlstr.append("              A.OBC_FIN_PAYDAY,                   \n");
        	sqlstr.append("              A.OBC_FRST_CNT_CONDI,                   \n");
        	sqlstr.append("              A.OBC_MID_REQ_MONTH,                   \n");
        	sqlstr.append("              A.OBC_MID_CNT,                   \n");
        	sqlstr.append("              A.OBC_FIN_CONDI,                   \n");
        	sqlstr.append("              A.OBC_EMP_RATE,                   \n");
        	sqlstr.append("              A.OBC_EMP_YN,                   \n");
        	sqlstr.append("              A.OBC_PENSION_RATE,                   \n");
        	sqlstr.append("              A.OBC_PENSION_YN,                   \n");
        	sqlstr.append("              A.OBC_HEALTH_RATE,                   \n");
        	sqlstr.append("              A.OBC_HEALTH_YN,                   \n");
        	sqlstr.append("              A.OBC_ELDER_RATE,                   \n");
        	sqlstr.append("              A.OBC_ELDER_YN,                   \n");
        	sqlstr.append("              A.OBC_WORK_RATE,                   \n");
        	sqlstr.append("              A.OBC_WORK_YN,                   \n");
        	sqlstr.append("              A.OBC_RESIGN_RATE,                   \n");
        	sqlstr.append("              A.OBC_RESIGN_YN,                   \n");
        	sqlstr.append("              A.OBC_SAFE_RATE,                   \n");
        	sqlstr.append("              A.OBC_SAFE_YN,                   \n");
        	sqlstr.append("              A.OBC_ENV_RATE,                   \n");
        	sqlstr.append("              A.OBC_ENV_YN,                   \n");
        	sqlstr.append("              A.OBC_SITE_RATE,                   \n");
        	sqlstr.append("              A.OBC_SITE_YN,                   \n");
        	sqlstr.append("              A.OBC_DUTY_RATE,                   \n");
        	sqlstr.append("              A.OBC_DUTY_YN,                   \n");
        	sqlstr.append("              A.OBC_WARR_YN,                   \n");
        	sqlstr.append("              A.PAY_DIV,                   \n");
        	sqlstr.append("              A.OBC_IND_YN,                   \n");
        	sqlstr.append("              A.OBC_FRST_CONT_RATE,                   \n");
        	sqlstr.append("              TO_CHAR(C.SUPP_REQ_DY,'YYYY-MM-DD') AS SUPP_REQ_DY_NM,                   \n");
        	sqlstr.append("              B.SITE_ATTEND_YN,                   \n");
        	sqlstr.append("              NVL(F_GET_CODE_NAME('BID_SUPP_SITEPARTI',B.SITEPARTI_YN),'-') AS SITEDESC_YN_NM,                   \n");
        	sqlstr.append("              B.SITE_ATTEND_REASON                   \n");
        	sqlstr.append("         FROM BID_MASTER A, BID_SUPP B, TBE_INFO C                   \n");
			sqlstr.append("        WHERE A.BID_NO = B.BID_NO(+)							\n");
			sqlstr.append("          AND A.BID_DEG = B.BID_DEG(+)							\n");
			sqlstr.append("          AND A.BID_NO = C.BID_NO(+)							\n");
			sqlstr.append("          AND A.BID_DEG = C.BID_DEG(+)							\n");
			sqlstr.append("          AND A.BID_NO = '"+params.get("BID_NO")+"'							\n");
			sqlstr.append("          AND A.BID_DEG = '"+params.get("BID_DEG")+"'							\n");
			sqlstr.append("          AND B.VENDOR_CD(+) = '"+params.get("VENDOR_CD")+"'					\n");
			search.setStatement(sqlstr.toString());
			rowSet = search.execute();
            if( rowSet != null && rowSet.size() > 0 )
            	valueobject = RowSetUtility.getValueObject(rowSet.getRow(0));
        }catch(WAFSQLException se) {
            super.doException(se);
            this.storage.setSuccess(false);
            this.storage.setMessage(se.getMessage());
            storage.setDetailMessage(se);
            
        }finally {
        	if( valueobject == null ) valueobject = new ValueObject();
            return valueobject;
        }
	}
	
	/**
	 * 발주의뢰(외주) 접수 상세를 검색하여 리턴
	 * @param Params
	 * @return
	 */
	public void updateSupp(Connection connection) throws Exception {

        Persistent persistent = new PersistentImpl(connection);
        StrBuffer sqlstr = new StrBuffer();
        try {
        	sqlstr.append("			MERGE INTO BID_SUPP SUPP USING 																																		\n");
        	sqlstr.append("			(SELECT distinct ? AS BID_NO,? AS BID_DEG,? AS VENDOR_CD, ?  AS SITE_ATTEND_YN, ? AS ACCT_ID															\n");
        	sqlstr.append("			,S.CORP_ID,S.CORP_REG_NO,S.CORP_KOR,S.REP_NAME,SC.USER_NAME,SC.HP1||'-'||SC.HP2||'-'||SC.HP3 AS CHAGE_HP,SC.EMAIL,? AS SITE_ATTEND_REASON			\n");
        	sqlstr.append("			FROM SUPP_INFO S , SUPP_CHARGE SC WHERE S.CORP_ID = SC.CORP_ID AND S.CORP_ID = ? AND SC.USER_NAME = ?) A														\n");
        	sqlstr.append("			 ON (SUPP.BID_NO = A.BID_NO AND SUPP.VENDOR_CD = A.VENDOR_CD AND SUPP.BID_DEG = A.BID_DEG) 											\n");
        	sqlstr.append("			WHEN MATCHED THEN																																							\n");
        	sqlstr.append("			UPDATE SET 																																										\n");
        	sqlstr.append("			SUPP.SITE_ATTEND_YN = A.SITE_ATTEND_YN																															\n");
        	sqlstr.append("			,SUPP.SITE_ATTEND_REASON = A.SITE_ATTEND_REASON																												\n");
        	sqlstr.append("			,UPD_BY = A.ACCT_ID																																							\n");
        	sqlstr.append("			,UPD_DATE = SYSDATE																																							\n");
        	sqlstr.append("			WHEN NOT MATCHED THEN																																					\n");
        	sqlstr.append("			INSERT (BID_NO,BID_DEG,VENDOR_CD,VENDOR_NO,VENDOR_NAME,REPRE_NO,CHARGE_NAME,CHAGE_HP,CHARGE_EMAIL,SITE_ATTEND_YN,SITE_ATTEND_REASON,CRE_BY,CRE_DATE)				\n");
        	sqlstr.append("			VALUES (A.BID_NO,A.BID_DEG,A.CORP_ID,A.CORP_REG_NO,A.CORP_KOR,A.REP_NAME,A.USER_NAME,A.CHAGE_HP,A.EMAIL,A.SITE_ATTEND_YN,A.SITE_ATTEND_REASON,A.ACCT_ID,SYSDATE)		\n");
            persistent.setStatement(sqlstr.toString());
            persistent.addParameter(params.get("BID_NO"));
            persistent.addParameter(params.get("BID_DEG"));
            persistent.addParameter(params.get("VENDOR_CD"));
            persistent.addParameter(params.get("SITE_ATTEND_YN"));            
            persistent.addParameter(storage.getUser().get("ACCT_ID"));
            persistent.addParameter(params.get("SITE_ATTEND_REASON"));
            persistent.addParameter(params.get("VENDOR_CD"));
            persistent.addParameter(storage.getUser().get("USER_NAME"));
            persistent.execute();
        }
        catch(Exception e) {
            WAFLogger.error(this.getClass().getName() + " --> updUser() : " + e.getMessage());
            WAFLogger.error("SQL : " + sqlstr);
            WAFLogger.error(e);
            throw e;
        }
	}
	
	  /**
     * 사용자 정보 저장
	 * @param event
	 * @param valueObject
	 * @return
	 */
	public boolean save() {
        try {
            conn.begin();
            
            updateSupp(conn.getConnection());
            return true;
        }
        catch(Exception e) {
            WAFLogger.error(this.getClass().getName() + " --> save() : " + e.getMessage());
            WAFLogger.error(e);
            conn.setRollback();

            storage.setDetailMessage(e);
            return false;
        }
        finally {
        	
            conn.end();
        }
    }
}