package incheon.res.rdm.com.minwon;


import incheon.com.cmm.context.RequestContext;
import incheon.com.security.vo.LoginVO;
import incheon.res.rdm.com.minwon.service.RdmComMinwonService;
import incheon.res.rdm.com.minwon.vo.*;
import incheon.res.rdm.com.perinfo.vo.RdmComPerinfo;
import incheon.res.mng.govoff.service.RdmOeGovoffService;
import incheon.res.mng.govoff.vo.RdmOeGovoff;
import incheon.res.mng.govoff.vo.RdmOeGovoffVO;
import jakarta.xml.soap.SOAPMessage;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;

@Component("minwonService")
public class MinwonService {
	
    @Resource(name = "propertiesService")
    protected EgovPropertyService propertiesService;
    @Resource
    protected RdmComMinwonService rdmComMinwonService;
    @Resource
    protected RdmOeGovoffService rdmOeGovoffService;
    @Resource(name = "minwonUtil")
    protected MinwonUtil minwonUtil;
    @Resource(name = "minwonSOAP")
    protected MinwonSOAP minwonSOAP;
    
    
    
    /** Log Info */
    protected Log log = LogFactory.getLog(this.getClass());
   
	String callUrl;
	String mngCde;
	String requestMng;
	String responseMng;
	String pkiKey;
	String webUrl;
	String crrIde;
	String kwaCd2;
	String exeCde;

	////// 국토부 ////////
	
	public static final String SOWNN00215 = "SOWNN00215";	//민원사무정보조회 //기존 : SOWNN00246
	public static final String SOWNN00226 = "SOWNN00226";	//민원처리 기한 계산 //기존 : SOWNN00257
	public static final String SOWNN00220 = "SOWNN00220";	//접수부서코드조회 //기존 : SOWNN00251
	public static final String SOWNN00219 = "SOWNN00219";	//민원신청접수
	
	public static final String SOWNN00218 = "SOWNN00218";	//수령처리
	public static final String SOWNN00221 = "SOWNN00221";	//접수확인
	public static final String SOWNN00222 = "SOWNN00222";	//처리결과
	public static final String SOWNN00213 = "SOWNN00213";	//처리결과
	
	/*
	///// 인천광역시 //////////
	public static final String SOWNN00212 = "SOWNN00212";
	
	public static final String SOWNN00215 = "SOWNN00215"; //
	public static final String SOWNN00226 = "SOWNN00226";
	
	public static final String SOWNN00219 = "SOWNN00219";
	public static final String SOWNN00218 = "SOWNN00218";
	public static final String SOWNN00221 = "SOWNN00221";
	public static final String SOWNN00217 = "SOWNN00217";
	public static final String SOWNN00232 = "SOWNN00232";
	public static final String SOWNN00231 = "SOWNN00231";
	public static final String SOWNN00222 = "SOWNN00222";
*/



	/**
	 * 민원사무정보조회
	 */
	public Sownn00215outVO getOfficeInfo(String cgg_mw_afr_cl_no, String mngCde) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();

		this.mngCde = mngCde;
		// 자치단체정보
	    RdmOeGovoffVO govffVO = new RdmOeGovoffVO();
		govffVO.setMngInstCd(mngCde);
		govffVO.setUserAcntMngNo(userAcntMngNo);

		RdmOeGovoff rdmOeGovoff = rdmOeGovoffService.selectGovoffNew(govffVO);
		requestMng	= rdmOeGovoff.getDmndDeptCd();
		responseMng	= rdmOeGovoff.getRspnsDeptCd();
		pkiKey		= rdmOeGovoff.getSggGpkiCrtf();
		webUrl		= rdmOeGovoff.getSaeoSrvrIp();
		crrIde		= rdmOeGovoff.getSaeoLgnId().toUpperCase();
		kwaCd2		= rdmOeGovoff.getCvlcptRcptDept();
		callUrl		= "http://"+webUrl+":3100/stmr/websvc/std/ws"; //인천시는 3100임(원래 3200 이었음)
		
		log.info("::::: MinwonService getOfficeInfo callUrl : "+callUrl);
		
		String msgkey = minwonUtil.rndData();

		Sownn00215inVO inVO = new Sownn00215inVO();
		inVO.setIfid( SOWNN00215 );
		inVO.setSrcorgcd(requestMng);
		inVO.setTgtorgcd(responseMng);
		inVO.setResultcode("000");
		inVO.setMsgkey(msgkey);
		inVO.setCgg_mw_afr_cl_no( cgg_mw_afr_cl_no );
		inVO.setPkiKey(pkiKey);

		String msg = minwonUtil.buildXml(inVO);

		log.info("::::: MinwonService getOfficeInfo buildXml : "+msg);

		SOAPMessage resSOAPMessage = minwonSOAP.sendSOAP(msg, callUrl);
		Sownn00215outVO outVO = new Sownn00215outVO();
		outVO.setTag("list");
		outVO = (Sownn00215outVO)minwonUtil.getResultVO(resSOAPMessage,outVO, mngCde);
		return outVO;
	}


	/**
	 * 민원처리 기한 계산
	 */
	public Sownn00226outVO getDayCount(Sownn00215outVO vo, String mngCde) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();

		this.mngCde = mngCde;
		// 자치단체정보
	    RdmOeGovoffVO govffVO = new RdmOeGovoffVO();
		govffVO.setMngInstCd(mngCde);
		govffVO.setUserAcntMngNo(userAcntMngNo);

		RdmOeGovoff rdmOeGovoff = rdmOeGovoffService.selectGovoffNew(govffVO);
		requestMng	= rdmOeGovoff.getDmndDeptCd();
		responseMng	= rdmOeGovoff.getRspnsDeptCd();
		pkiKey		= rdmOeGovoff.getSggGpkiCrtf();
		webUrl		= rdmOeGovoff.getSaeoSrvrIp();
		crrIde		= rdmOeGovoff.getSaeoLgnId().toUpperCase();
		kwaCd2		= rdmOeGovoff.getCvlcptRcptDept();
		callUrl		= "http://"+webUrl+":3100/stmr/websvc/std/ws";
		
		String msgkey = minwonUtil.rndData();

		SimpleDateFormat ymdFormat = new SimpleDateFormat( "yyyyMMdd" );
		SimpleDateFormat tmFormat = new SimpleDateFormat( "HHmmss" );
		Calendar cal = Calendar.getInstance();
		String reg_ymd = ymdFormat.format( cal.getTime() );
		String reg_tm = tmFormat.format( cal.getTime() );

		Sownn00226inVO inVO = new Sownn00226inVO();
		inVO.setIfid( SOWNN00226 );
		inVO.setSrcorgcd(requestMng);
		inVO.setTgtorgcd(responseMng);
		inVO.setResultcode("000");
		inVO.setMsgkey(msgkey);
		inVO.setReg_ymd(reg_ymd);
		inVO.setReg_tm(reg_tm);
		inVO.setCourt_daycnt(vo.getCourt_daycnt());
		inVO.setPkiKey(pkiKey);

		String msg = minwonUtil.buildXml(inVO);
		
		log.info("::::: MinwonService getDayCount buildXml : "+msg);

		SOAPMessage resSOAPMessage = minwonSOAP.sendSOAP(msg, callUrl);
		Sownn00226outVO outVO = new Sownn00226outVO();
		outVO.setTag("list");
		outVO = (Sownn00226outVO)minwonUtil.getResultVO(resSOAPMessage,outVO,mngCde);
		return outVO;
	}


	/**
	 * 접수부서코드조회
	 */
	public Sownn00220outVO getDeptCode(String  cgg_mw_afr_cl_no, String mngCde) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();

		this.mngCde = mngCde;
		// 자치단체정보
	    RdmOeGovoffVO govffVO = new RdmOeGovoffVO();
		govffVO.setMngInstCd(mngCde);
		govffVO.setUserAcntMngNo(userAcntMngNo);

		RdmOeGovoff rdmOeGovoff = rdmOeGovoffService.selectGovoffNew(govffVO);
		requestMng	= rdmOeGovoff.getDmndDeptCd();
		responseMng	= rdmOeGovoff.getRspnsDeptCd();
		pkiKey		= rdmOeGovoff.getSggGpkiCrtf();
		webUrl		= rdmOeGovoff.getSaeoSrvrIp();
		crrIde		= rdmOeGovoff.getSaeoLgnId().toUpperCase();
		kwaCd2		= rdmOeGovoff.getCvlcptRcptDept();
		callUrl		= "http://"+webUrl+":3100/stmr/websvc/std/ws";
		
		String msgkey = minwonUtil.rndData();

		Sownn00220inVO inVO = new Sownn00220inVO();
		inVO.setIfid( SOWNN00220 );
		inVO.setSrcorgcd(requestMng);
		inVO.setTgtorgcd(responseMng);
		inVO.setResultcode("000");
		inVO.setMsgkey(msgkey);
		inVO.setPkiKey(pkiKey);

		inVO.setIn_cgg_mw_afr_cl_no(cgg_mw_afr_cl_no);

		String msg = minwonUtil.buildXml(inVO);
		
		log.info("::::: MinwonService getDeptCode buildXml : "+msg);

		SOAPMessage resSOAPMessage = minwonSOAP.sendSOAP(msg, callUrl);
		Sownn00220outVO outVO = new Sownn00220outVO();
		outVO.setTag("list");
		outVO = (Sownn00220outVO)minwonUtil.getResultVO(resSOAPMessage,outVO, mngCde);
		return outVO;
	}


	/**
	 * 민원신청접수
	 */
	public Sownn00219outVO createMinwon(Sownn00215outVO vo1, Sownn00226outVO vo2, Sownn00220outVO vo3, RdmComPerinfo vo, String mngCde) throws Exception{
		
		this.mngCde = mngCde;
		// 자치단체정보
	    RdmOeGovoffVO govffVO = new RdmOeGovoffVO();
		govffVO.setMngInstCd(mngCde);
		govffVO.setUserAcntMngNo(vo.getUserAcntMngNo());
		
		RdmOeGovoff rdmOeGovoff = rdmOeGovoffService.selectGovoffNew(govffVO);
		requestMng	= rdmOeGovoff.getDmndDeptCd();
		responseMng	= rdmOeGovoff.getRspnsDeptCd();
		pkiKey		= rdmOeGovoff.getSggGpkiCrtf();
		webUrl		= rdmOeGovoff.getSaeoSrvrIp();
		kwaCd2		= rdmOeGovoff.getCvlcptRcptDept(); //접수부서(민원과 : 35000690000)
		exeCde		= rdmOeGovoff.getPrcsInstCd(); //주처리부서
		crrIde		= rdmOeGovoff.getSaeoLgnId().toUpperCase();
		callUrl		= "http://"+webUrl+":3100/stmr/websvc/std/ws";
		
		String msgkey = minwonUtil.rndData();

		Sownn00219inVO inVO = new Sownn00219inVO();
		inVO.setIfid( SOWNN00219 );
		inVO.setSrcorgcd(requestMng);
		inVO.setTgtorgcd(responseMng);
		inVO.setResultcode("000");
		inVO.setMsgkey(msgkey);
		inVO.setPkiKey(pkiKey);

		RdmComMinwonVO minwonVO = new RdmComMinwonVO();
		minwonVO.setRoadDggMngNo(vo.getRoadDggMngNo());

		RdmComMinwonVO rdmComMinwon = rdmComMinwonService.selectMinwon(minwonVO);
		
		log.info("::::: MinwonService rdmComPerinfo : "+vo.toString());
		log.info("::::: MinwonService rdmComMinwon : "+rdmComMinwon.toString());
		
		/**
		 * 하나의 새올에 접수부서가 2개 이상일 경우에는 새올에 셋팅 할 수 없으므로
		 * 새올에 접수부서 조회 오류시 지자체 정보 테입블에 "시군구민원접수행정과코드2"로 접수처리함
		 */
		/*
		if(vo3 == null){
			inVO.setIn_take_cgg_code(mngCde);			//접수시군구
			inVO.setIn_take_dep_code(kwaCd2); 			//접수부서코드
			inVO.setMain_deal_dep_code(vo1.getDeal_dep_code());			//주처리부서코드

		}else{
			inVO.setIn_take_cgg_code(vo3.getSf_code());			//접수시군구
			inVO.setIn_take_dep_code(vo3.getTake_dep_code()); 	//접수부서코드
			inVO.setMain_deal_dep_code(vo3.getDeal_dep_code());		//주처리부서코드(건설과 : 35301350000)
		}
		*/
		
		
		inVO.setIn_take_cgg_code(mngCde);			//접수시군구
		inVO.setIn_take_dep_code(kwaCd2); 			//접수부서코드
		

		inVO.setTake_ymd(vo2.getTake_ymd());					//접수일자
		inVO.setIn_take_tm(vo2.getTake_tm());					//접수시간
		inVO.setTake_se("12");									//코드 CAF002 , value :14 , 내용 :인터넷(시군구)
		//inVO.setIn_take_stf_id(rdmComGuifDVO.getCrrIde());	//접수자ID
		
		inVO.setIn_take_stf_id(crrIde);			//접수자ID
		inVO.setRegr_id(crrIde); 					//등록자ID
		
		inVO.setMain_deal_dep_code(exeCde + "0000");						//주처리부서코드(건설과 : 35301350000)
		inVO.setDpp_id(crrIde);					//처리자ID

		inVO.setIn_info_prot_yn("Y");
		inVO.setMw_se("20");									//코드 CAF004 , value :20 , 내용 :단순민원
		inVO.setCgg_mw_afr_cl_no(vo1.getCgg_mw_afr_cl_no());	//시군구민원사무분류번호
		inVO.setDeal_plan_ymd(vo2.getDeal_plan_ymd()); 			//처리예정일자
		inVO.setIn_deal_plan_tm(vo2.getDeal_plan_tm());			//처리예정시간
		inVO.setDeal_plan_daycnt(vo1.getShrt_daycnt());			//처리예정일수
		//개인사용자
		if("UAT003".equals(rdmComMinwon.getUserAuthrt())){
			inVO.setAppl_mwin_se("01");								//코드 CAF005 , value :01 , 내용 :개인
			inVO.setMw_aplct_sid(rdmComMinwon.getRrno());		//민원인주민번호
			inVO.setMw_aplct_sid_sno("000");
			inVO.setMw_aplct_nm(rdmComMinwon.getUserNm());		//민원인성명
			inVO.setMw_aplct_addr(rdmComMinwon.getAddr());		//민원인주소
			inVO.setPost_no(rdmComMinwon.getZip().trim());			//우편번호
			inVO.setAddr_se("1");									//코드 CAF006 , value :1 , 내용 :개인

		//법인사용자
		}else{
			inVO.setAppl_mwin_se("02");								//코드 CAF005 , value :03 , 내용 :법인
			inVO.setMw_aplct_sid(rdmComMinwon.getRrno());		//민원인주민번호
			inVO.setMw_aplct_sid_sno("000");
			inVO.setMw_aplct_nm(rdmComMinwon.getUserNm());		//민원인성명
			inVO.setMw_aplct_addr(rdmComMinwon.getAddr());		//민원인주소
			inVO.setIn_wrkr_bup_no( rdmComMinwon.getBrno().trim());	//사업자법인번호
			inVO.setWrkr_bup_nm(rdmComMinwon.getBzentyNm().trim() );		//사업자법인명
			inVO.setPost_no(rdmComMinwon.getZip().trim().replaceAll("-", ""));			//우편번호
			inVO.setAddr_se("4");									//코드 CAF006 , value :5 , 내용 :기관단체
		}
		
		inVO.setMw_aplct_telno(rdmComMinwon.getAplcntTelno());	//신청인 전화번호
		inVO.setFee_recpt_se(rdmComMinwon.getStlmDlngMthd());		//수수료납부구분
		inVO.setRecpt_fee(propertiesService.getString("rdm.cappTot"));								//수납수수료
		inVO.setIn_mw_prog_se("02");							//코드 CMM022 , value :02 , 내용 :허가
		inVO.setGet_met("01");									//코드 CAF008 , value :01 , 내용 :신청인방문
		//inVO.setRegr_id(SessionRO.getSessionRdmPermitUserInfo().getUsrIde() );			//등록자ID
		inVO.setFirst_deal_daycnt(vo2.getDeal_plan_ymd());		//최초처리일수
		//inVO.setDpp_id(SessionRO.getSessionRdmPermitUserInfo().getUsrIde() );				//처리자ID

		inVO.setMw_aplct_pwd("1234");
		inVO.setDeal_se("00");
		inVO.setGet_met("13");
		inVO.setSnd_fee("0.0");
		//inVO.setMw_notes("도로굴착 연계 테스트");
		

/**
		inVO.setTake_ymd(vo2.getTake_ymd());
		inVO.setIn_take_tm(vo2.getTake_tm());
		inVO.setIn_take_cgg_code( sessionROsp.getSessionUserInfo().getMngCde() );
		inVO.setIn_take_dep_code( vo3.getTake_dep_code() );
		inVO.setTake_se("14");					//코드 CAF002 , value :14 , 내용 :인터넷(시군구)
		//inVO.setIn_take_stf_id(sessionROsp.getSessionUserInfo().getUsrIde());
		inVO.setIn_take_stf_id(rdmComGuifDVO.getCrrIde());
		inVO.setMw_se("20");					//코드 CAF004 , value :20 , 내용 :단순민원
		inVO.setCgg_mw_afr_cl_no(vo1.getCgg_mw_afr_cl_no());
		inVO.setDeal_plan_ymd(vo2.getDeal_plan_ymd());
		inVO.setIn_deal_plan_tm(vo2.getDeal_plan_tm());
		inVO.setDeal_plan_daycnt(vo1.getShrt_daycnt());
		inVO.setMain_deal_dep_code( sessionROsp.getSessionUserInfo().getDptIde() );
		inVO.setAppl_mwin_se("03");				//코드 CAF005 , value :03 , 내용 :법인
		inVO.setMw_aplct_sid(rdmComMinwonDVO.getJumNum());
		inVO.setMw_aplct_nm(rdmComMinwonDVO.getUsrNam());
		inVO.setMw_aplct_addr(rdmComMinwonDVO.getAdrAdr());
		inVO.setIn_wrkr_bup_no( rdmComMinwonDVO.getComNam());
		inVO.setWrkr_bup_nm( rdmComMinwonDVO.getBizNum());
		inVO.setPost_no(rdmComMinwonDVO.getZipNum());
		inVO.setAddr_se("5");					//코드 CAF006 , value :5 , 내용 :기관단체
		inVO.setFee_recpt_se(rdmComMinwonDVO.getPayMtd());
		inVO.setRecpt_fee("1000");
		inVO.setIn_mw_prog_se("02");			//코드 CMM022 , value :02 , 내용 :허가
		inVO.setGet_met("01");					//코드 CAF008 , value :01 , 내용 :신청인방문
		//inVO.setRegr_id(sessionROsp.getSessionUserInfo().getUsrIde() );
		inVO.setRegr_id(rdmComGuifDVO.getCrrIde() );
		inVO.setFirst_deal_daycnt(vo2.getDeal_plan_ymd());
		//inVO.setDpp_id(sessionROsp.getSessionUserInfo().getUsrIde() );
		inVO.setDpp_id(rdmComGuifDVO.getCrrIde() );
**/
		log.info("::::: MinwonService buildXml");
		String msg = minwonUtil.buildXml(inVO);

		log.info("::::: MinwonService sendSOAP");
		SOAPMessage resSOAPMessage = minwonSOAP.sendSOAP(msg, callUrl);
		
		log.info("::::: MinwonService getResultVO");
		Sownn00219outVO outVO = new Sownn00219outVO();
		outVO.setTag("statusInfo");
		outVO = (Sownn00219outVO)minwonUtil.getResultVO(resSOAPMessage,outVO,mngCde);
		
		//시군구 민원연계 정보 입력(RMT_CGGI_DT)
		RdmComMinwonVO minVO = new RdmComMinwonVO();
		minVO.setRoadDggMngNo(nullToString(vo.getRoadDggMngNo()));
		minVO.setCvlcptRcptNo(nullToString(outVO.getMw_take_no()));
		minVO.setRcptYmd(nullToString(inVO.take_ymd));
		minVO.setRcptHr(nullToString(inVO.in_take_tm));
		minVO.setRcptInstCd(nullToString(inVO.in_take_cgg_code));
		minVO.setRcptDeptCd(nullToString(inVO.in_take_dep_code));
		minVO.setRcptSe(nullToString(inVO.take_se));
		minVO.setRcptUserId(nullToString(inVO.in_take_stf_id));
		minVO.setPrtcRlsYn(nullToString(inVO.in_info_prot_yn));
		minVO.setCvlcptSeCd(nullToString(inVO.mw_se));
		minVO.setSggCffdnClsfCd(nullToString(inVO.cgg_mw_afr_cl_no));
		minVO.setCvlcptOutline(nullToString(inVO.mw_notes));
		minVO.setPrcsPrnmntYmd(nullToString(inVO.deal_plan_ymd));
		minVO.setPrcsPrnmntHr(nullToString(inVO.in_deal_plan_tm));
		minVO.setPrcsTermDayCnt(nullToString(inVO.deal_plan_daycnt));
		minVO.setMaiyPrcsDeptCd(nullToString(inVO.main_deal_dep_code));
		minVO.setAplcntSe(nullToString(inVO.appl_mwin_se));
		minVO.setAplcntRrno(nullToString(inVO.mw_aplct_sid));
		minVO.setAplcntRrnoSn(nullToString(inVO.mw_aplct_sid_sno));
		minVO.setAplcntFlnm(nullToString(inVO.mw_aplct_nm));
		minVO.setAplcntTelno(nullToString(inVO.mw_aplct_telno));
		minVO.setAplcntAddr(nullToString(inVO.mw_aplct_addr));
		minVO.setBzmnCorpNo(nullToString(inVO.in_wrkr_bup_no));
		minVO.setBzmnCorpNm(nullToString(inVO.wrkr_bup_nm));
		minVO.setZip(nullToString(inVO.post_no));
		minVO.setAddrSe(nullToString(inVO.addr_se));
		minVO.setAplyIssuNocs(nullToString(inVO.appl_cnt));
		minVO.setRcvmtFee(nullToString(inVO.recpt_fee));
		minVO.setPrcsAmt(nullToString(inVO.deal_amt));
		minVO.setAplcntEml(nullToString(inVO.mw_aplct_email));
		minVO.setAplcntRlsPswd(nullToString(inVO.mw_aplct_pwd));
		minVO.setPrcsSe(nullToString(inVO.deal_se));
		minVO.setRcvMthd(nullToString(inVO.get_met));
		
		
		if(!minVO.getCvlcptRcptNo().equals("")){
			log.info("::::: MinwonService selectCggi");
			RdmComMinwonVO minwon = rdmComMinwonService.selectCggi(minVO);
			if(minwon != null){
				log.info("::::: MinwonService updateCggiDt");
				rdmComMinwonService.updateCggiDt(minVO);
			}else{
				log.info("::::: MinwonService insertCggiDt");
				rdmComMinwonService.insertCggiDt(minVO);
			}
		}

		return outVO;
	}


	/**
	 * 수령처리
	 */
	public Sownn00218outVO updateReceive( Sownn00219outVO vo, String mngCde) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();

		this.mngCde = mngCde;
		// 자치단체정보
	    RdmOeGovoffVO govffVO = new RdmOeGovoffVO();
		govffVO.setMngInstCd(mngCde);
		govffVO.setUserAcntMngNo(userAcntMngNo);

		RdmOeGovoff rdmOeGovoff = rdmOeGovoffService.selectGovoffNew(govffVO);
		requestMng	= rdmOeGovoff.getDmndDeptCd();
		responseMng	= rdmOeGovoff.getRspnsDeptCd();
		pkiKey		= rdmOeGovoff.getSggGpkiCrtf();
		webUrl		= rdmOeGovoff.getSaeoSrvrIp();
		crrIde		= rdmOeGovoff.getSaeoLgnId().toUpperCase();
		kwaCd2		= rdmOeGovoff.getCvlcptRcptDept();
		callUrl		= "http://"+webUrl+":3100/stmr/websvc/std/ws";
		
		String msgkey = minwonUtil.rndData();

		Sownn00218inVO inVO = new Sownn00218inVO();
		inVO.setIfid( SOWNN00218 );
		inVO.setSrcorgcd(requestMng);
		inVO.setTgtorgcd(responseMng);
		inVO.setResultcode("000");
		inVO.setMsgkey(msgkey);
		inVO.setPkiKey(pkiKey);

		HashMap mngMap = new HashMap();
		mngMap.put("mngCde", loginVO.getRoadMngInstCd());

		inVO.setMw_pps_getr_id(crrIde);
		inVO.setUser_id(crrIde);

		inVO.setMw_take_no(vo.getMw_take_no());

		String msg = minwonUtil.buildXml(inVO);
		
		log.info("::::: MinwonService updateReceive buildXml : "+msg);

		SOAPMessage resSOAPMessage = minwonSOAP.sendSOAP(msg, callUrl);
		Sownn00218outVO outVO = new Sownn00218outVO();
		outVO.setTag("statusInfo");
		outVO = (Sownn00218outVO)minwonUtil.getResultVO(resSOAPMessage,outVO,mngCde);
		return outVO;
	}


	/**
	 * 접수확인
	 */
	public Sownn00221outVO updateAccept( Sownn00219outVO vo, String mngCde) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();

		this.mngCde = mngCde;
		// 자치단체정보
	    RdmOeGovoffVO govffVO = new RdmOeGovoffVO();
		govffVO.setMngInstCd(mngCde);
		govffVO.setUserAcntMngNo(userAcntMngNo);

		RdmOeGovoff rdmOeGovoff = rdmOeGovoffService.selectGovoffNew(govffVO);
		requestMng	= rdmOeGovoff.getDmndDeptCd();
		responseMng	= rdmOeGovoff.getRspnsDeptCd();
		pkiKey		= rdmOeGovoff.getSggGpkiCrtf();
		webUrl		= rdmOeGovoff.getSaeoSrvrIp();
		crrIde		= rdmOeGovoff.getSaeoLgnId().toUpperCase();
		kwaCd2		= rdmOeGovoff.getCvlcptRcptDept();
		callUrl		= "http://"+webUrl+":3100/stmr/websvc/std/ws";
		
		String msgkey = minwonUtil.rndData();

		Sownn00221inVO inVO = new Sownn00221inVO();
		inVO.setIfid( SOWNN00221 );
		inVO.setSrcorgcd(requestMng);
		inVO.setTgtorgcd(responseMng);
		inVO.setResultcode("000");
		inVO.setMsgkey(msgkey);
		inVO.setPkiKey(pkiKey);

		HashMap mngMap = new HashMap();
		mngMap.put("mngCde", loginVO.getRoadMngInstCd());

		inVO.setIn_confirm_se("Y");
		inVO.setMw_take_no(vo.getMw_take_no());
		inVO.setTake_stf_id(loginVO.getUserId());	//안양시
		inVO.setDpp_id(crrIde);
		inVO.setDeal_dutyp_id(crrIde);

		String msg = minwonUtil.buildXml(inVO);
		
		log.info("::::: MinwonService updateAccept buildXml : "+msg);

		SOAPMessage resSOAPMessage = minwonSOAP.sendSOAP(msg, callUrl);
		Sownn00221outVO outVO = new Sownn00221outVO();
		outVO.setTag("statusInfo");
		outVO = (Sownn00221outVO)minwonUtil.getResultVO(resSOAPMessage,outVO,mngCde);
		return outVO;
	}


	/**
	 * 처리결과
	 */
	public Sownn00222outVO updateComplete( String civNum, String mngCde) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();

		this.mngCde = mngCde;
		// 자치단체정보
	    RdmOeGovoffVO govffVO = new RdmOeGovoffVO();
		govffVO.setMngInstCd(mngCde);
		govffVO.setUserAcntMngNo(userAcntMngNo);
		RdmOeGovoff rdmOeGovoff = rdmOeGovoffService.selectGovoffNew(govffVO);

		requestMng	= rdmOeGovoff.getDmndDeptCd();
		responseMng	= rdmOeGovoff.getRspnsDeptCd();
		pkiKey		= rdmOeGovoff.getSggGpkiCrtf();
		webUrl		= rdmOeGovoff.getSaeoSrvrIp();
		crrIde		= rdmOeGovoff.getSaeoLgnId().toUpperCase();
		kwaCd2		= rdmOeGovoff.getCvlcptRcptDept();
		callUrl		= "http://"+webUrl+":3100/stmr/websvc/std/ws";
		
		String msgkey = minwonUtil.rndData();
		SimpleDateFormat ymdFormat = new SimpleDateFormat( "yyyyMMdd" );
		Calendar cal = Calendar.getInstance();
		String reg_ymd = ymdFormat.format( cal.getTime() );

		HashMap mngMap = new HashMap();
		mngMap.put("mngCde", loginVO.getRoadMngInstCd());

		Sownn00222inVO inVO = new Sownn00222inVO();
		inVO.setIfid( SOWNN00222 );
		inVO.setSrcorgcd(requestMng);
		inVO.setTgtorgcd(responseMng);
		inVO.setResultcode("000");
		inVO.setMsgkey(msgkey);
		inVO.setPkiKey(pkiKey);
		inVO.setMw_take_no(civNum);
		inVO.setDeal_se_temp("01");					//코드 CMM023,  처리구분
		inVO.setDeal_dtl("처리완료");
		inVO.setDeal_bas("도로법 시행령 제28조");				// --------------------------------------- 메세지
		inVO.setQuery_real_deal_ymd(reg_ymd);
		inVO.setDpp_id(loginVO.getUserId());
		//inVO.setDpp_id(rdmComGuifDVO.getCrrIde() );
		inVO.setBpm_yn("N");
		String msg = minwonUtil.buildXml(inVO);
		
		log.info("::::: MinwonService updateComplete buildXml : "+msg);
		
		SOAPMessage resSOAPMessage = minwonSOAP.sendSOAP(msg, callUrl);
		
		Sownn00222outVO outVO = new Sownn00222outVO();
		outVO.setTag("statusInfo");
		outVO = (Sownn00222outVO)minwonUtil.getResultVO(resSOAPMessage,outVO,mngCde);
		
		//새올민원결과처리내역 등록로그
		RdmComMinwonVO minVO = new RdmComMinwonVO();
		minVO.setCvlcptRcptNo(civNum);
		minVO.setPrcrUserId(nullToString(inVO.dpp_id));
		minVO.setPrcsRbprsnUserId(nullToString(inVO.deal_dutyp_id));
		minVO.setActlPrcsYmd(nullToString(inVO.query_real_deal_ymd));
		minVO.setInldrDcsnYmd(nullToString(inVO.chif_dcsn_ymd));
		minVO.setInldrDcsnDsctn(nullToString(inVO.chif_dcsn_dtl));
		minVO.setPrcsDsctn(nullToString(inVO.deal_dtl));
		minVO.setPrcsBss(nullToString(inVO.deal_bas));
		minVO.setAltrvPrsentCn(nullToString(inVO.ctrprop_presnt));
		
		rdmComMinwonService.updateCggiComplete(minVO);
		
		return outVO;
	}

	/**
	 * 공통코드조회
	 * @param code_id
	 * @return
	 * @throws Exception
	 */
	public Sownn00213outVO getComCode ( String code_id, String mngCde ) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();
		
		this.mngCde = mngCde;
		// 자치단체정보
	    RdmOeGovoffVO govffVO = new RdmOeGovoffVO();
		govffVO.setMngInstCd(mngCde);
		govffVO.setUserAcntMngNo(userAcntMngNo);

		RdmOeGovoff rdmOeGovoff = rdmOeGovoffService.selectGovoffNew(govffVO);
		requestMng	= rdmOeGovoff.getDmndDeptCd();
		responseMng	= rdmOeGovoff.getRspnsDeptCd();
		pkiKey		= rdmOeGovoff.getSggGpkiCrtf();
		webUrl		= rdmOeGovoff.getSaeoSrvrIp();
		crrIde		= rdmOeGovoff.getSaeoLgnId().toUpperCase();
		kwaCd2		= rdmOeGovoff.getCvlcptRcptDept();
		callUrl		= "http://"+webUrl+":3100/stmr/websvc/std/ws";
		
		String msgkey = minwonUtil.rndData();

		Sownn00213inVO inVO = new Sownn00213inVO();
		inVO.setIfid( SOWNN00213 );
		inVO.setSrcorgcd(requestMng);
		inVO.setTgtorgcd(responseMng);
		inVO.setResultcode("000");
		inVO.setMsgkey(msgkey);
		inVO.setPkiKey(pkiKey);

		inVO.setCode_id(code_id);
		inVO.setLabel("code_cn");
		inVO.setSort("1");

		String msg = minwonUtil.buildXml(inVO);
		
		log.info("::::: MinwonService getComCode buildXml : "+msg);

		SOAPMessage resSOAPMessage = minwonSOAP.sendSOAP(msg, callUrl);
		Sownn00213outVO outVO = new Sownn00213outVO();
		outVO.setTag("list");
		outVO = (Sownn00213outVO)minwonUtil.getResultVO(resSOAPMessage,outVO,mngCde);
		return outVO;
	}
	public String nullToString(String str) {
		if(str == null)
			return "";
		else
			return str.trim();
	}


}
