b4679bf7684fa0a309d88ba6f92d819418869be8.svn-base 18.4 KB
package com.thinkgem.jeesite.modules.reg.web.updata;

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

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

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.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.RegBaseZdbhqk;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseZdjbxx;
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.RegBusNydsyq;
import com.thinkgem.jeesite.modules.reg.entity.bus.RegBusQlr;
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.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.bus.change.RegBusCSlsq;
import com.thinkgem.jeesite.modules.reg.entity.updata.RegBusSjhjtable;
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 com.thinkgem.jeesite.modules.sys.utils.DictUtils;
/**
 * 数据汇交
 * @author Administrator
 * @version 2015-10-12
 */
@Controller
@RequestMapping(value = "${adminPath}/reg/updata/regBusSjhjtable")
public class SCDJ2000901Controller extends BaseController {
	@Autowired
	private RegBusSjhjtableService regBusSjhjtableService;
	@Autowired
	private RegBusCSlsqController regBusCSlsqController;
	
    public String updataSCDJ2000901xml(RegBusNydsyq regBusNydsyq,RegBusQlr regBusQlr,RegBaseZdjbxx regBaseZdjbxx,RegBusSlsq regBusSlsq,RegBaseZdbhqk regBaseZdbhqk,RegBusSjmain regBusSjmain,RegBusSf regBusSf,RegBusSh regBusSh,RegBusSz regBusSz,RegBusFz regBusFz,RegBusGd regBusGd,RegBusSqr regBusSqr,RegBusYwr regBusYwr,List<Act> list) throws Exception{  
        Date date=new Date();
        String tempReturnValue="";
    	//报文头部数据填充
    	RegBusSjhjtable regBusSjhjtable = new RegBusSjhjtable();
    
    	regBusSjhjtable.setBizmsgid(Global.getAreaCode());//set
        regBusSjhjtable.setAsid("AS100");
        regBusSjhjtable.setAreacode(Global.getAreaCode());
        regBusSjhjtable.setRectype("2000901");
        regBusSjhjtable.setRighttype(regBusNydsyq.getQllx());
        if(StringUtils.isNotBlank(regBusSlsq.getDjdl())){
        	 regBusSjhjtable.setRegtype(regBusSlsq.getDjdl());//set上次不动产权证号
         }
         else  regBusSjhjtable.setRegtype(" ");
        regBusSjhjtable.setCreatedate(new Date());
   
		regBusSjhjtable.setRecflowid(regBusNydsyq.getYwh());//set业务号
        if(StringUtils.isNotBlank(regBusNydsyq.getDjjg())){
        	 regBusSjhjtable.setRegorgid(regBusNydsyq.getDjjg());//set上次不动产权证号
         }
         else{
        	 String xzq=DictUtils.getDictLabels(Global.getAreaCode(), "reg_bus_xq", "");
             xzq="陕西省汉中市"+xzq+"不动产登记交易服务中心"; 
        	 regBusSjhjtable.setRegorgid(xzq);
         }
        regBusSjhjtable.setParcelid(regBusNydsyq.getZddm());//set宗地/宗海代码
        regBusSjhjtable.setEstatenum(regBusNydsyq.getBdcdyh());//set不动产单元号
        regBusSjhjtable.setPreestatenum(regBusNydsyq.getBdcdyh());//set上次不动产单元号
        if(StringUtils.isNotBlank(regBusNydsyq.getBdcqzh())){
         	 regBusSjhjtable.setPrecertid(regBusNydsyq.getBdcqzh());//set上次不动产权证号
          }
          else  regBusSjhjtable.setPrecertid(" ");
          
        regBusSjhjtable.setCertcount("0");//set不动产权证号码数量
        regBusSjhjtable.setProofcount("0");//set证明号码数量
  
        /*原报文顺序号生成
        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);
        //报文体-权利人信息转化
        String retQlr="",retZdjbxx="",retZdbhqk="",retNydsyq="",retSlsq="";
        if(StringUtils.isNotBlank(regBusQlr.getId())){
        	retQlr=RegUtils.QlrzhuanStr(regBusQlr,regBusSlsq.getQxdm(),regBusNydsyq.getBdcdyh(),regBusNydsyq.getBdcqzh());
         	sbStr.append(retQlr);
        }else{
     	   tempReturnValue="权利人不能为空!数据上报失败";           
         return tempReturnValue;
      }
        if(StringUtils.isNotBlank(regBaseZdjbxx.getId())){
        	retZdjbxx=RegUtils.ZdjbxxzhuanStr(regBaseZdjbxx,regBusSlsq);
         	sbStr.append(retZdjbxx);
        }else{
     	   tempReturnValue="宗地基本信息不能为空!数据上报失败";           
           return tempReturnValue;
        }
        /*if(StringUtils.isNotBlank(regBaseZdbhqk.getId())){
        	retZdbhqk = JaxbMapper.toXml( regBaseZdbhqk, RegBaseZdbhqk.class, "UTF-8");
        	sbStr.append(retZdbhqk.substring(56));
        }*/
        if((StringUtils.isNotBlank(regBaseZdbhqk.getId()))&&(StringUtils.isNotBlank(regBusNydsyq.getId()))){
         	retZdbhqk=RegUtils.ZdbhqkzhuanStr(regBaseZdbhqk,regBusNydsyq.getQxdm());
         	sbStr.append(retZdbhqk);
         }

       if(StringUtils.isNotBlank(regBusNydsyq.getId())){
    	   retNydsyq=RegUtils.NydsyqzhuanStr(regBusNydsyq);
       	  sbStr.append(retNydsyq);
       }else{
    	   tempReturnValue="土地使用权信息不能为空!数据上报失败";           
           return tempReturnValue;
        }
        if(StringUtils.isNotBlank(regBusSlsq.getId())){
        	 retSlsq=RegUtils.SlsqzhuanStr(regBusSlsq);
        	 sbStr.append(retSlsq);
        }else{
     	   tempReturnValue="受理申请信息不能为空!数据上报失败";           
           return tempReturnValue;
        }
		String retSj="", retSf="",retSh="",retSz="",retFz="",retGd="",retSqr="";
		if(StringUtils.isNotBlank(regBusSjmain.getId())){
			retSj=RegUtils.SjzhuanStr(regBusSjmain,regBusSlsq.getQxdm());
			sbStr.append(retSj);
		}
		if(StringUtils.isNotBlank(regBusSf.getId())){
			retSf=RegUtils.SfzhuanStr(regBusSf);
			sbStr.append(retSf);
		}
		
		 if(StringUtils.isNotBlank(regBusSlsq.getId())){
			 retSh=RegUtils.ShzhuanStr(list, regBusSlsq);
        	 sbStr.append(retSh);
        }
		if(StringUtils.isNotBlank(regBusSz.getId())){
			retSz=RegUtils.SzzhuanStr(regBusSz,regBusSlsq.getQxdm());
			sbStr.append(retSz);
		}
		if(StringUtils.isNotBlank(regBusFz.getId())){
			retFz=RegUtils.FzzhuanStr(regBusFz,regBusSlsq.getQxdm());
			sbStr.append(retFz);
		}
		if(StringUtils.isNotBlank(regBusGd.getId())){
			retGd=RegUtils.GdzhuanStr(regBusGd,regBusSlsq.getQxdm());
			 sbStr.append(retGd);
		}
		if((StringUtils.isNotBlank(regBusQlr.getId()))||(StringUtils.isNotBlank(regBusYwr.getId()))){
			retSqr=RegUtils.SqrzhuanStr(regBusQlr,regBusYwr,regBusSlsq.getQxdm());
			sbStr.append(retSqr);
		}
		 else{
      	   tempReturnValue="申请人不能为空!数据上报失败";           
           return tempReturnValue;
         }
		//赋值相关信息,准备上报省里
		String provincialstr = sbStr.toString();
		RegBusSjhjtable provincialSjhjtable = regBusSjhjtable;
				
		sbStr.append(JXmlUtils.dataEStr).append(JXmlUtils.messageEStr);
        
       
        //System.out.println(sbStr.toString());
        
        //调用生成XML报文文件的函数,参数为生成文件名和要生成的内容字符串
    	//JXmlUtils.strChangeXML("Biz"+regBusSjhjtable.getBizmsgid(), sbStr.toString());
    	//数字签名
        String Filepath=Global.getUserfilesBaseDir() + Global.UP_DATA_URL+"Biz"+regBusSjhjtable.getBizmsgid()+".xml";
        
       // String Filepath="src/main/webapp/updatas/"+"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");
        //--------------------------- 
        String Filename="Biz"+regBusSjhjtable.getBizmsgid()+".xml";
        //SftpFileLoad.sshSftp("172.16.56.7","mysftp","FANXIAPING",0,Filepath,Filename);
        //上报省里
    	//生成xml字符串并调用接口方法,向市局接口系统传送,并在市局接口服务器生成报文文件上报省里
        try{
	        tempReturnValue = regBusCSlsqController.sjdbxmlinfo(provincialstr, provincialSjhjtable);
	        if(tempReturnValue.contains("成功") || StringUtils.isBlank(tempReturnValue)){
	        	tempReturnValue = "响应成功";
	        	regBusSjhjtable.setIssuccess("0");
	        }else{
	        	regBusSjhjtable.setIssuccess("1");
	        }
    	}catch(Exception e){
    		e.printStackTrace();
    		regBusSjhjtable.setIssuccess("2");
    	}
        regBusSjhjtableService.save(regBusSjhjtable);
        return tempReturnValue;
    }
    
    public String updataCSCDJ2000901xml(RegBusNydsyq regBusNydsyq,RegBusQlr regBusQlr,RegBaseZdjbxx regBaseZdjbxx,RegBusCSlsq regBusCSlsq,RegBaseZdbhqk regBaseZdbhqk,RegBusSjmain regBusSjmain,RegBusSf regBusSf,RegBusSh regBusSh,RegBusSz regBusSz,RegBusFz regBusFz,RegBusGd regBusGd,RegBusSqr regBusSqr,RegBusYwr regBusYwr,List<Act> list) throws Exception{  
        Date date=new Date();
        String tempReturnValue="";
    	//报文头部数据填充
    	RegBusSjhjtable regBusSjhjtable = new RegBusSjhjtable();
    
    	regBusSjhjtable.setBizmsgid(Global.getAreaCode());//set
        regBusSjhjtable.setAsid("AS100");
        regBusSjhjtable.setAreacode(Global.getAreaCode());
        regBusSjhjtable.setRectype("2000901");
        regBusSjhjtable.setRighttype(regBusNydsyq.getQllx());
        if(StringUtils.isNotBlank(regBusCSlsq.getDjdl())){
        	 regBusSjhjtable.setRegtype(regBusCSlsq.getDjdl());//set上次不动产权证号
         }
         else  regBusSjhjtable.setRegtype(" ");
        regBusSjhjtable.setCreatedate(new Date());
   
		regBusSjhjtable.setRecflowid(regBusNydsyq.getYwh());//set业务号
        if(StringUtils.isNotBlank(regBusNydsyq.getDjjg())){
        	 regBusSjhjtable.setRegorgid(regBusNydsyq.getDjjg());//set上次不动产权证号
         }
         else{
        	 String xzq=DictUtils.getDictLabels(Global.getAreaCode(), "reg_bus_xq", "");
             xzq="陕西省汉中市"+xzq+"不动产登记交易服务中心"; 
        	 regBusSjhjtable.setRegorgid(xzq);
         }
        regBusSjhjtable.setParcelid(regBusNydsyq.getZddm());//set宗地/宗海代码
        regBusSjhjtable.setEstatenum(regBusNydsyq.getBdcdyh());//set不动产单元号
        regBusSjhjtable.setPreestatenum(regBusNydsyq.getBdcdyh());//set上次不动产单元号
        if(StringUtils.isNotBlank(regBusNydsyq.getBdcqzh())){
         	 regBusSjhjtable.setPrecertid(regBusNydsyq.getBdcqzh());//set上次不动产权证号
          }
          else  regBusSjhjtable.setPrecertid(" ");
          
        regBusSjhjtable.setCertcount("0");//set不动产权证号码数量
        regBusSjhjtable.setProofcount("0");//set证明号码数量
        
        /*
        int currentNum = 0;
		String maxZddmSxh = regBusSjhjtableService.findMaxBizmsgid();//使用当前宗地代码
		currentNum=RegUtils.getxh(maxZddmSxh);
		//获取当前最大那个顺序号;为空 时就从1开始累计  市局
	   // 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);
        //报文体-权利人信息转化
        String retQlr="",retZdjbxx="",retZdbhqk="",retNydsyq="",retSlsq="";
        if(StringUtils.isNotBlank(regBusQlr.getId())){
        	retQlr=RegUtils.QlrzhuanStr(regBusQlr,regBusCSlsq.getQxdm(),regBusNydsyq.getBdcdyh(),regBusNydsyq.getBdcqzh());
         	sbStr.append(retQlr);
        }else{
     	   tempReturnValue="权利人不能为空!数据上报失败";           
         return tempReturnValue;
      }
        if(StringUtils.isNotBlank(regBaseZdjbxx.getId())){
        	retZdjbxx=RegUtils.CZdjbxxzhuanStr(regBaseZdjbxx,regBusCSlsq);
         	sbStr.append(retZdjbxx);
        }else{
     	   tempReturnValue="宗地基本信息不能为空!数据上报失败";           
           return tempReturnValue;
        }
        /*if(StringUtils.isNotBlank(regBaseZdbhqk.getId())){
        	retZdbhqk = JaxbMapper.toXml( regBaseZdbhqk, RegBaseZdbhqk.class, "UTF-8");
        	sbStr.append(retZdbhqk.substring(56));
        }*/
        if((StringUtils.isNotBlank(regBaseZdbhqk.getId()))&&(StringUtils.isNotBlank(regBusNydsyq.getId()))){
         	retZdbhqk=RegUtils.ZdbhqkzhuanStr(regBaseZdbhqk,regBusNydsyq.getQxdm());
         	sbStr.append(retZdbhqk);
         }

       if(StringUtils.isNotBlank(regBusNydsyq.getId())){
    	   retNydsyq=RegUtils.NydsyqzhuanStr(regBusNydsyq);
       	  sbStr.append(retNydsyq);
       }else{
    	   tempReturnValue="土地使用权信息不能为空!数据上报失败";           
           return tempReturnValue;
        }
        if(StringUtils.isNotBlank(regBusCSlsq.getId())){
        	 retSlsq=RegUtils.CSlsqzhuanStr(regBusCSlsq);
        	 sbStr.append(retSlsq);
        }else{
     	   tempReturnValue="受理申请信息不能为空!数据上报失败";           
           return tempReturnValue;
        }
		String retSj="", retSf="",retSh="",retSz="",retFz="",retGd="",retSqr="";
		if(StringUtils.isNotBlank(regBusSjmain.getId())){
			retSj=RegUtils.SjzhuanStr(regBusSjmain,regBusCSlsq.getQxdm());
			sbStr.append(retSj);
		}
		if(StringUtils.isNotBlank(regBusSf.getId())){
			retSf=RegUtils.SfzhuanStr(regBusSf);
			sbStr.append(retSf);
		}
		
		 if(StringUtils.isNotBlank(regBusCSlsq.getId())){
			 retSh=RegUtils.CShzhuanStr(list, regBusCSlsq);
        	 sbStr.append(retSh);
        }
		if(StringUtils.isNotBlank(regBusSz.getId())){
			retSz=RegUtils.SzzhuanStr(regBusSz,regBusCSlsq.getQxdm());
			sbStr.append(retSz);
		}
		if(StringUtils.isNotBlank(regBusFz.getId())){
			retFz=RegUtils.FzzhuanStr(regBusFz,regBusCSlsq.getQxdm());
			sbStr.append(retFz);
		}
		if(StringUtils.isNotBlank(regBusGd.getId())){
			retGd=RegUtils.GdzhuanStr(regBusGd,regBusCSlsq.getQxdm());
			 sbStr.append(retGd);
		}
		if((StringUtils.isNotBlank(regBusQlr.getId()))||(StringUtils.isNotBlank(regBusYwr.getId()))){
			retSqr=RegUtils.SqrzhuanStr(regBusQlr,regBusYwr,regBusCSlsq.getQxdm());
			sbStr.append(retSqr);
		}
		 else{
      	   tempReturnValue="申请人不能为空!数据上报失败";           
           return tempReturnValue;
         }
		//赋值相关信息,准备上报省里
		String provincialstr = sbStr.toString();
		RegBusSjhjtable provincialSjhjtable = regBusSjhjtable;
     	
		sbStr.append(JXmlUtils.dataEStr).append(JXmlUtils.messageEStr);
        
       
        //System.out.println(sbStr.toString());
        
        //调用生成XML报文文件的函数,参数为生成文件名和要生成的内容字符串
    	//JXmlUtils.strChangeXML("Biz"+regBusSjhjtable.getBizmsgid(), sbStr.toString());
    	//数字签名
        String Filepath=Global.getUserfilesBaseDir() + Global.UP_DATA_URL+"Biz"+regBusSjhjtable.getBizmsgid()+".xml";
        
       // String Filepath="src/main/webapp/updatas/"+"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");
        //--------------------------- 
        String Filename="Biz"+regBusSjhjtable.getBizmsgid()+".xml";
        //SftpFileLoad.sshSftp("172.16.56.7","mysftp","FANXIAPING",0,Filepath,Filename);
        //上报省里
    	//生成xml字符串并调用接口方法,向市局接口系统传送,并在市局接口服务器生成报文文件上报省里
        try{
	        tempReturnValue = regBusCSlsqController.sjdbxmlinfo(provincialstr, provincialSjhjtable);
	        if(tempReturnValue.contains("成功") || StringUtils.isBlank(tempReturnValue)){
	        	tempReturnValue = "响应成功";
	        	regBusSjhjtable.setIssuccess("0");
	        }else{
	        	regBusSjhjtable.setIssuccess("1");
	        }
    	}catch(Exception e){
    		e.printStackTrace();
    		regBusSjhjtable.setIssuccess("2");
    	}
        regBusSjhjtableService.save(regBusSjhjtable);
        return tempReturnValue;
    }
}