21600fae5b98ec7b17864ec96475949281fc5b71.svn-base 17.5 KB
package com.thinkgem.jeesite.modules.reg.web.updata;

import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusSlsq;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusSqr;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusSz;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusYwr;
import com.thinkgem.jeesite.modules.reg.entity.qjxt.ZdK103;
import com.thinkgem.jeesite.modules.reg.entity.updata.RegBusSjhjtable;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseCService;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseChxx11Service;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseHService;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseZdjbxxService;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseZrzService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusFdcq2Service;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusFzService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusGdService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusQlrService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusRightsService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusSfService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusShService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusSjmainService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusSqrService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusSzService;
import com.thinkgem.jeesite.modules.reg.service.bus.RegBusYwrService;
import com.thinkgem.jeesite.modules.reg.service.qjxt.ZdK103Service;
import com.thinkgem.jeesite.modules.sys.utils.DictUtils;
import com.inspur.uaccess.common.exception.NoMatchXMLDocumentException;
import com.inspur.uaccess.common.utils.RSASignature;
import com.thinkgem.jeesite.common.config.Global;
import com.thinkgem.jeesite.common.mapper.JaxbMapper;
import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.common.utils.xml.JXmlUtils;
import com.thinkgem.jeesite.common.web.BaseController;
import com.thinkgem.jeesite.modules.act.entity.Act;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseC;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseChxx11;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseH;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseZdjbxx;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseZrz;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusBdcqzsdjxx;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusFdcq2;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusFz;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusGd;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusQlr;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusRights;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusSf;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusSh;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusSjmain;
import com.thinkgem.jeesite.modules.reg.service.updata.RegBusSjhjtableService;
import com.thinkgem.jeesite.modules.reg.utils.RegUtils;
import com.thinkgem.jeesite.modules.reg.web.bus.change.RegBusCSlsqController;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.dom4j.DocumentException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping(value = "${adminPath}/reg/updata/regBusSjhjtable")
public class FWSCDJ1000402 extends BaseController {
	@Autowired
	private RegBaseHService regBaseHService;
	@Autowired
	private RegBusRightsService regBusRightsService;
	@Autowired
	private RegBusFdcq2Service regBusFdcq2Service;
	@Autowired
	private RegBaseZrzService regBaseZrzService;
	@Autowired
	private RegBusSjhjtableService regBusSjhjtableService;
	@Autowired
	private RegBusYwrService regBusYwrService;
	@Autowired
	private RegBusQlrService regBusQlrService;
	@Autowired
	private RegBaseCService regBaseCService;
	@Autowired
	private RegBaseZdjbxxService regBaseZdjbxxService;
	@Autowired
	private RegBusSjmainService regBusSjmainService;
	@Autowired
	private RegBusShService regBusShService;
	@Autowired
	private RegBusSzService regBusSzService;
	@Autowired
	private RegBusFzService regBusFzService;
	@Autowired
	private RegBusGdService regBusGdService;
	@Autowired
	private RegBusSqrService regBusSqrService;
	@Autowired
	private RegBusSfService regBusSfService;
	@Autowired
	private RegBusCSlsqController regBusCSlsqController;
	@Autowired
	private ZdK103Service kService;
	@Autowired
	private RegBaseChxx11Service regBaseChxxService;
	
	public String fw1000402(RegBusSlsq regBusSlsq,List<RegBusBdcqzsdjxx> regBusBdcqzsdjxxList,List<Act> list) throws Exception{ 
		String tempReturnValue="",bdcdyhStr="",djjgStr="",retFdcq2="";
		String retQlr="",retZrz="",retC="",retH="",retLjz="";
		
		RegBusQlr regBusQlrSJHJ=new RegBusQlr();
		Date date=new Date();
		//报文头部数据填充
    	RegBusSjhjtable regBusSjhjtable = new RegBusSjhjtable();  
    	regBusSjhjtable.setBizmsgid(Global.getAreaCode());//set
        regBusSjhjtable.setAsid("AS100");
        regBusSjhjtable.setAreacode(Global.getAreaCode());
        regBusSjhjtable.setRectype("1000402");
        regBusSjhjtable.setCreatedate(new Date());
        regBusSjhjtable.setCertcount("0");//set不动产权证号码数量
        regBusSjhjtable.setProofcount("0");//set证明号码数量
        regBusSjhjtable.setRecflowid(regBusSlsq.getYwh());//set业务号   
        regBusSjhjtable.setRighttype(regBusBdcqzsdjxxList.get(0).getQllx());//权利类型
		if(StringUtils.isNotBlank(regBusSlsq.getDjdl())){
	         regBusSjhjtable.setRegtype(regBusSlsq.getDjdl());//set上次不动产权证号
	    }
	    else  regBusSjhjtable.setRegtype(" ");
		
		regBusSjhjtable.setParcelid(regBusBdcqzsdjxxList.get(0).getZddm());//set宗地/宗海代码
		
		if(StringUtils.isNotBlank(regBusBdcqzsdjxxList.get(0).getBdcqzh())){
		    regBusSjhjtable.setPrecertid(regBusBdcqzsdjxxList.get(0).getBdcqzh());//set上次不动产权证号
		}
		else  regBusSjhjtable.setPrecertid(" ");
		regBusSjhjtable.setEstatenum(regBusBdcqzsdjxxList.get(0).getBdcdyh());//set不动产单元号
        //-----------------------------
		//报文体-权利人信息转化 	//获取权利人信息xml
		regBusQlrSJHJ.setYwh(regBusSlsq.getYwh());
		List<RegBusQlr> findQlrSJHJList = regBusQlrService.findListSxh(regBusQlrSJHJ);
		if(findQlrSJHJList.size() > 0)regBusQlrSJHJ = findQlrSJHJList.get(0);											 
	    if(StringUtils.isNotBlank(regBusQlrSJHJ.getId())){
	    	retQlr=RegUtils.QlrzhuanStr(regBusQlrSJHJ,regBusSlsq.getQxdm(),regBusBdcqzsdjxxList.get(0).getBdcdyh(),regBusBdcqzsdjxxList.get(0).getBdcqzh());
	    }  
	    else{
	        tempReturnValue="权利人不能为空!数据上报失败";           
	        return tempReturnValue;
	     }
	    //----------------------------------
		if(regBusBdcqzsdjxxList.size()>0){
			bdcdyhStr="";djjgStr="";;retZrz="";retLjz="";retH="";retFdcq2="";
			for (int i = 0;i < regBusBdcqzsdjxxList.size(); i++) {
				RegBusBdcqzsdjxx tempEntity = regBusBdcqzsdjxxList.get(i);
				tempEntity.setDbsj(DateUtils.getDate("yyyy-MM-dd"));
				
				RegBaseH regBaseH = regBaseHService.getdy(tempEntity.getBdcdyh());
				regBaseH.setStatus("9");
				regBaseH.setRights("2");//首次登记后就是现房了
				regBaseH.setIschafeng("0");
				regBaseH.setIsyiyi("0"); 
				RegBaseC regBaseC=new RegBaseC();
				regBaseC=regBaseCService.get(regBaseH.getCid());
				RegBusRights rights = new RegBusRights();
				rights.setBdcdyh(regBaseH.getBdcdyh());
				List<RegBusRights>  rightsList =  regBusRightsService.findList(rights);
				if(rightsList.size() > 0){
					rights = rightsList.get(0);
				}
				rights.setRemarks(regBusSlsq.getDjxl());
				rights.setSsouyq(regBusSlsq.getYwh());
				
				RegBusFdcq2 regBusFdcq2 = new RegBusFdcq2();
				regBusFdcq2.setYwh(tempEntity.getYwh());
				regBusFdcq2.setBdcdyh(tempEntity.getBdcdyh());
				List<RegBusFdcq2> findList = regBusFdcq2Service.findList(regBusFdcq2);
				RegBaseZrz regBaseZrz =new RegBaseZrz();
				if(findList.size() == 1){
					regBusFdcq2 = findList.get(0);
					regBaseZrz =new RegBaseZrz();
				    regBaseZrz =regBaseZrzService.getRegBaseZrz(regBusFdcq2.getBdcdyh().substring(0, 24)+"0000");
					regBaseZrz.setJgrq(DateUtils.parseDate(regBusFdcq2.getJgsj()));
				}
				//------------------------------------------
				bdcdyhStr+=tempEntity.getBdcdyh()+",";			
				djjgStr=regBusFdcq2.getDjjg();
				if(StringUtils.isNotBlank(regBaseZrz.getId())){
					retZrz=RegUtils.ZrzzhuanStr(regBaseZrz,regBusSlsq.getQxdm());
			     }
				 else{
					 tempReturnValue="自然幢不能为空!数据上报失败";           
			         return tempReturnValue;
			     }
				 if(StringUtils.isNotBlank(regBaseZrz.getId())){
			         retLjz=RegUtils.LjzzhuanStr(regBaseH,regBaseZrz,regBusSlsq.getQxdm());        	
			     }
			     else{
			         tempReturnValue="逻辑幢不能为空!数据上报失败";           
			         return tempReturnValue;
			     }
				 if(StringUtils.isNotBlank(regBaseC.getId())){
			       retC+=RegUtils.CzhuanStr( regBaseC,regBusSlsq.getQxdm());
			     }
			     else{
			        tempReturnValue="层信息不能为空!数据上报失败";           
			        return tempReturnValue;
			     }
				 
				  if(StringUtils.isNotBlank(regBaseH.getId())){
			         retH+=RegUtils.HzhuanStr( regBaseH,regBusSlsq.getQxdm());
			      }
			      else{
			         tempReturnValue="户信息不能为空!数据上报失败";           
			         return tempReturnValue;
			      }
				  
				  if(StringUtils.isNotBlank(regBusFdcq2.getId())){
			        	retFdcq2=retFdcq2+RegUtils.Fdcq2zhuanStr(regBusFdcq2);
			        }
			        else{
			        	   tempReturnValue="房地产权不能为空!数据上报失败";           
			            return tempReturnValue;
			         }
				//---------------------------------------------------						
			}
		}
		//------------------------------------------
	    regBusSjhjtable.setPreestatenum(regBusBdcqzsdjxxList.get(0).getBdcdyh());//set上次不动产单元号
	    if(StringUtils.isNotBlank(djjgStr)){
      	  regBusSjhjtable.setRegorgid(djjgStr);//set上次不动产权证号
        }
        else{
    	   String xzq=DictUtils.getDictLabels(Global.getAreaCode(), "reg_bus_xq", "");
           xzq="陕西省汉中市"+xzq+"不动产登记交易服务中心"; 
    	   regBusSjhjtable.setRegorgid(xzq);
        }

	    String strzb103="",retSlsq="";
		RegBaseZdjbxx regBaseZdjbxx=new RegBaseZdjbxx();
		regBaseZdjbxx.setZddm((regBusBdcqzsdjxxList.get(0).getZddm()));
		List<RegBaseZdjbxx> findZdjbxxSJHJList = regBaseZdjbxxService.findList(regBaseZdjbxx);
		if(findZdjbxxSJHJList.size() > 0)regBaseZdjbxx = findZdjbxxSJHJList.get(0);							
		

		if(StringUtils.isNotBlank(regBaseZdjbxx.getId())){
        	ZdK103 zdk103 = new ZdK103();
        	zdk103.setBdcdyh(regBaseZdjbxx.getBdcdyh());
        	strzb103=kService.ZBzhuanStr(zdk103);
        	if(strzb103.equals("1")) {
        		if(StringUtils.isNotBlank(regBaseZdjbxx.getChid())) {
            		RegBaseChxx11 regBaseChxx = new RegBaseChxx11();
            		
                    regBaseChxx = regBaseChxxService.get(regBaseZdjbxx.getChid());
            		strzb103=RegUtils.ZBzhuanStr(regBaseChxx,regBaseZdjbxx);
            		}else {
            			tempReturnValue="坐标信息不能为空!数据上报失败";           
                        return tempReturnValue;
            		}
        	}
        }
        else{
        	   tempReturnValue="坐标信息不能为空!数据上报失败";           
            return tempReturnValue;
         }
        
         if(StringUtils.isNotBlank(regBusSlsq.getId())){
       	 retSlsq=RegUtils.SlsqzhuanStr(regBusSlsq);
       }
       else{
       	   tempReturnValue="受理申请不能为空!数据上报失败";           
           return tempReturnValue;
        }
        RegBusSjmain regBusSjmain=new RegBusSjmain();
        regBusSjmain.setYwh(regBusSlsq.getYwh());
		List<RegBusSjmain> findSjmainSJHJList = regBusSjmainService.findList(regBusSjmain);
		String id = "",retSj="",retSf="",retSh="",retSz="",retFz="",retGd="",retSqr="";
		if(findSjmainSJHJList.size()>0){
		   id = findSjmainSJHJList.get(0).getId();
		   regBusSjmain = regBusSjmainService.get(id);
	    }
		if(StringUtils.isNotBlank(regBusSjmain.getId())){
			retSj=RegUtils.SjzhuanStr(regBusSjmain,regBusSlsq.getQxdm());
		}
		RegBusSf regBusSf=new RegBusSf();
		regBusSf.setYwh(regBusSlsq.getYwh());
		List<RegBusSf> findSfSJHJList = regBusSfService.findList(regBusSf);
		if(findSfSJHJList.size() > 0)regBusSf = findSfSJHJList.get(0);
		if(StringUtils.isNotBlank(regBusSf.getId())){
			retSf=RegUtils.SfzhuanStr(regBusSf);
		}
		
		RegBusSh regBusSh=new RegBusSh();
		regBusSh.setYwh(regBusSlsq.getYwh()); 
		List<RegBusSh> findShSJHJList = regBusShService.findList(regBusSh);
		if(findShSJHJList.size() > 0)regBusSh = findShSJHJList.get(0);
		if(StringUtils.isNotBlank(regBusSlsq.getId())){
			 retSh=RegUtils.ShzhuanStr(list, regBusSlsq);
       }
		RegBusSz regBusSz=new RegBusSz();
		regBusSz.setYwh(regBusSlsq.getYwh());
		List<RegBusSz> findSzSJHJList = regBusSzService.findList(regBusSz);
		if(findSzSJHJList.size() > 0)regBusSz = findSzSJHJList.get(0);
		if(StringUtils.isNotBlank(regBusSz.getId())){
			retSz=RegUtils.SzzhuanStr(regBusSz,regBusSlsq.getQxdm());
		}
		RegBusFz regBusFz=new RegBusFz();
		regBusFz.setYwh(regBusSlsq.getYwh());
		List<RegBusFz> findFzSJHJList = regBusFzService.findList(regBusFz);
		if(findFzSJHJList.size() > 0)regBusFz = findFzSJHJList.get(0);
		if(StringUtils.isNotBlank(regBusFz.getId())){
			retFz=RegUtils.FzzhuanStr(regBusFz,regBusSlsq.getQxdm());
		}
		RegBusGd regBusGd=new RegBusGd();
		regBusGd.setYwh(regBusSlsq.getYwh());
	    List<RegBusGd> findGdSJHJList = regBusGdService.findList(regBusGd);
	    if(findGdSJHJList.size() > 0)regBusGd = findGdSJHJList.get(0);
	    if(StringUtils.isNotBlank(regBusGd.getId())){
			retGd=RegUtils.GdzhuanStr(regBusGd,regBusSlsq.getQxdm());
		}
	    RegBusYwr regBusYwrSJHJ=new RegBusYwr();
		regBusYwrSJHJ.setYwh(regBusSlsq.getYwh());
		List<RegBusYwr> findYwrSJHJList = regBusYwrService.findListSxh(regBusYwrSJHJ);
		if(findYwrSJHJList.size() > 0 )regBusYwrSJHJ = findYwrSJHJList.get(0);
        
	    if((StringUtils.isNotBlank(regBusQlrSJHJ.getId()))||(StringUtils.isNotBlank(regBusYwrSJHJ.getId()))){
			retSqr=RegUtils.SqrzhuanStr(regBusQlrSJHJ,regBusYwrSJHJ,regBusSlsq.getQxdm());
		}
		else{
	       	 tempReturnValue="申请人不能为空!数据上报失败";           
	         return tempReturnValue;
	     }
  		
		/* 原报文顺序号生成
		int currentNum = 0;
	    String maxZddmSxh = regBusSjhjtableService.findMaxBizmsgid();//使用当前宗地代码
	    currentNum=RegUtils.getxh(maxZddmSxh);
	    //-----------------------------------------
		// 0 代表前面补充0     
		// 4 代表长度为4     
		// d 代表参数为正数型     
		String str = String.format("%06d", currentNum+1);     
		regBusSjhjtable.setBizmsgid(Global.getAreaCode()+String.format("%ty", date)+String.format("%tm", date)+String.format("%td", date)+str);
		*/
	    
	    //查询并生成报文编号
        String bizmsgid = regBusSjhjtableService.Frandom(Global.getAreaCode());
        regBusSjhjtable.setBizmsgid(bizmsgid);
        
	//报文头转化
	StringBuilder sbStr = new StringBuilder();
	String retHead = JaxbMapper.toXml(regBusSjhjtable, RegBusSjhjtable.class, "UTF-8");
	sbStr.append(JXmlUtils.messageBStr).append(retHead.substring(56)).append(JXmlUtils.dataBStr);
	sbStr.append(retQlr);sbStr.append(retZrz);sbStr.append(retLjz);sbStr.append(retC);
	sbStr.append(retH);sbStr.append(strzb103);sbStr.append(retFdcq2);
	sbStr.append(retSlsq);sbStr.append(retSj);sbStr.append(retSf);
	sbStr.append(retSh);sbStr.append(retSz);sbStr.append(retFz);
	sbStr.append(retGd);sbStr.append(retSqr);
	//生成xml字符串并调用接口方法,向市局接口系统传送,并在市局接口服务器生成报文文件上报省里
 	regBusCSlsqController.sjdbxmlinfo(sbStr.toString(), regBusSjhjtable);
 	
	sbStr.append(JXmlUtils.dataEStr).append(JXmlUtils.messageEStr);
	//数字签名
    String Filepath=Global.getUserfilesBaseDir() + Global.UP_DATA_URL+"Biz"+regBusSjhjtable.getBizmsgid()+".xml";
    
	String xml = sbStr.toString();
	String RSApara=RegUtils.SJHJPara();
 	String abc = RSASignature.getNewMsgWithSignature(xml,RSApara);
 	String Digitalsign = abc.substring(abc.indexOf("<DigitalSign>")+13,abc.indexOf("</DigitalSign>"));   
 	//重新生成xml
	regBusSjhjtable.setDigitalsign(Digitalsign);//set数字签名	
	//----------
	FileUtils.writeStringToFile(new File(Filepath), abc, "UTF-8");
    //---------------------------
	regBusSjhjtable.setEstatenum("");//set不动产单元号
    regBusSjhjtable.setPreestatenum("");//set上次不动产单元号
    String Filename="Biz"+regBusSjhjtable.getBizmsgid()+".xml";
    try {
    	tempReturnValue = "响应成功";
//		tempReturnValue=SftpFileLoad.sshSftp("172.16.56.7","610702","610702",0,Filepath,Filename);
	} catch (Exception e) {
		System.out.println("发生异常的原因为 :"+e.getMessage());
		e.printStackTrace();
	}finally{
		//先判断是否响应成功,再存入数据,接入日志数量统计====0为接入成功1为失败
        if("响应成功".equals(tempReturnValue)){
        	regBusSjhjtable.setIssuccess("0");
        }else{
        	regBusSjhjtable.setIssuccess("1");
        }
		regBusSjhjtableService.save(regBusSjhjtable);
	}
    return tempReturnValue;
	}
}