45f01428cb605c0c96a51d09a37ae1aea612ad73.svn-base 10.5 KB
package com.thinkgem.jeesite.modules.title.service;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.common.utils.JsonUtil;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseC;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseH;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseLjz;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseXm;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseZdjbxx;
import com.thinkgem.jeesite.modules.reg.entity.base.RegBaseZrz;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseCService;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseHService;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseLjzService;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseXmService;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseZdjbxxService;
import com.thinkgem.jeesite.modules.reg.service.base.RegBaseZrzService;
import com.thinkgem.jeesite.modules.reg.utils.RegUtils;
import com.thinkgem.jeesite.modules.sys.utils.DictUtils;
import com.thinkgem.jeesite.modules.title.buss.RemoteBuss;
import com.thinkgem.jeesite.modules.title.po.Fwsx;
import com.thinkgem.jeesite.modules.title.po.Zsx;

@Service
public class ZsxService {
	
	@Autowired
	private RemoteBuss buss;
	@Autowired
	private RegBaseXmService xmService;
	@Autowired
	private RegBaseZrzService zrzService;
	@Autowired
	private RegBaseZdjbxxService zdjbxxService;
	@Autowired
	private RegBaseCService cService;
	@Autowired
	private RegBaseHService hService;
	@Autowired
	private RegBaseLjzService ljzService;
	

	@Transactional(readOnly=false)
	public void synZxx() throws Exception {
		Map map = buss.getZxx();
		ObjectMapper mapper = new ObjectMapper();
		List<Zsx> zlist = mapper.readValue(JsonUtil.toJsonString(map.get("zlist")), new TypeReference<List<Zsx>>() {});
		List<Fwsx> fwlist = mapper.readValue(JsonUtil.toJsonString(map.get("flist")), new TypeReference<List<Fwsx>>() {});
        if(zlist.size()>0) {
         for(int i =0;i<zlist.size();i++) {	
		    RegBaseXm xm = new RegBaseXm();
		    Zsx dto = zlist.get(i);
		    List<RegBaseXm> xmlist = xmService.findByXmbh(dto.getXmmc());
		    xm.setIsaudit("1");
		 if(xmlist.size()>0) {
			xm = xmlist.get(0);
		}else {
			xm.setXmbh(dto.getXmbh());
			xm.setXmmc(dto.getXmmc());
			xm.setJsdwmc(dto.getQymc());
			xm.setZjh(dto.getQybh());
			xmService.save(xm);
			RegBaseZdjbxx zdjbxx = new RegBaseZdjbxx();
			zdjbxx.setZddm(dto.getZddm());
			List<RegBaseZdjbxx> zdlist = zdjbxxService.findList(zdjbxx);
			if(zdlist.size()>0) {
				zdjbxx = zdlist.get(0);
				if(dto.getZt().equals("-1")) {
					zdjbxx.setXmid(null);//权籍删除
				}else {
				zdjbxx.setXmid(xm.getId());
				}
				zdjbxxService.save(zdjbxx);
			}
		}
		RegBaseZrz zrz = zrzService.getByZddmZrzh(dto.getZddm(),dto.getZrzh());
		if(zrz == null) {
			zrz = new RegBaseZrz();
		}
		zrz.setZrzh(dto.getZrzh());
		zrz.setBdcdyh(dto.getZrzh()+"0000");
		zrz.setYsdm("6001030110");
		zrz.setScjzmj(Double.parseDouble(dto.getJzmj().toString()));
		if(StringUtils.isNotBlank(dto.getJgrq())) {
			zrz.setJgrq(DateUtils.parseDate(dto.getJgrq()));
		}
		zrz.setXmmc(dto.getXmmc());
		zrz.setZcs(Integer.parseInt(dto.getZcs().toString()));
		zrz.setDscs(dto.getDscs().toString());
		zrz.setDxcs(dto.getDxcs().toString());
		zrz.setBz(dto.getBeizhu());		
		zrz.setFwjg(dto.getJzjg());
		zrz.setZddm(dto.getZddm());
		zrz.setXmid(xm.getId());
		zrz.setGhyt(dto.getJzyt());
		zrz.setJzwjbyt(DictUtils.getDictLabel(dto.getJzyt(), "reg_bus_fwyt", ""));
		zrz.setZt(dto.getZt());
		zrz.setZzdmj(Double.parseDouble(dto.getZdmj().toString()));
		zrz.setGzwmc(dto.getJzwmc());
		//zrz.setZydmj(Double.parseDouble(dto.getZydmj().toString()));
		//宗地分摊方式权籍系统与业务系统相反
		if(dto.getZdftfs().equals("1")) {
			zrz.setZdftfs("2");
		}else {
			zrz.setZdftfs("1");
		}
		zrz.setZts(Integer.parseInt(dto.getZts().toString()));
		zrz.setIsaudit("1");
		if(dto.getZt().equals("-1")) {
			zrz.setDelFlag("1");//权籍删除
		}else if (dto.getZt().equals("1")) {
			zrz.setDelFlag("0");//权籍删除
		}
		zrzService.save(zrz);
		//楼栋删除,需判断项目下是否还有其他有效楼栋
		if("1".equals(zrz.getDelFlag())) {
			RegBaseZrz zz = new RegBaseZrz();
			zz.setXmid(xm.getId());
			List<RegBaseZrz> zzlist = zrzService.findList(zz);
			if(zzlist.size()==0) {
				xm.setDelFlag("1");
				xmService.save(xm);
			}
		}
		RegBaseLjz ljz = ljzService.getByZrzhLjzh(dto.getZrzh(),dto.getZbm());
		if(ljz==null) {
			ljz = new RegBaseLjz();
		}
		ljz.setDscs(dto.getDscs().toString());
		ljz.setDxcs(dto.getDxcs().toString());
		ljz.setFwjg1(dto.getJzjg());
		ljz.setFwyt1(dto.getFwyt1());
		ljz.setLjzh(dto.getZbm());
		ljz.setZrzh(dto.getZrzh());
		ljz.setYsdm("6001030120");
		ljz.setZcs(dto.getZcs().toString());
		ljz.setYtmc(DictUtils.getDictLabel(dto.getFwyt1(), "reg_bus_fwyt", ""));
		ljz.setScjzmj(Double.parseDouble(dto.getJzmj().toString()));
		ljz.setBz(dto.getZh());
		if(StringUtils.isNotBlank(dto.getJgrq())) {
		    ljz.setJgrq(DateUtils.parseDate(dto.getJgrq()));
		}
		if(dto.getZt().equals("-1")) {
			ljz.setDelFlag("1");//权籍删除
			//删除其下层信息
			RegBaseC c = new RegBaseC();
			c.setLjzh(ljz.getLjzh());
			c.setZid(zrz.getId());
			c.setZrzh(ljz.getZrzh());
		   List<RegBaseC> clist = cService.findList(c);
		   if(clist.size()>0) {
			   for(int z=0;z<clist.size();z++) {
				   cService.delete(clist.get(z));
			   }
		   } 
		}
		ljzService.save(ljz);
	}
         
        }
	if(fwlist.size()>0) {
		for ( int j=0;j<fwlist.size();j++) {
			Fwsx dto = fwlist.get(j);
	
	RegBaseH h = new RegBaseH();
	RegBaseZrz zrz = new RegBaseZrz();
	zrz=zrzService.getByZddmZrzh(dto.getZddm(),dto.getZrzh());
	
	if(zrz!=null) {
		zrz.setZts(dto.getZts());
		zrzService.save(zrz);
		int num = Integer.parseInt(dto.getZzc())-Integer.parseInt(dto.getQsc());
		int m = 0;
		 String cid="";
	    do {
	    	//负层跨到正层,不生成0层
	    	if((Integer.parseInt(dto.getQsc())+m)==0) {
	    		m++;
	    		continue;
	    	}
	      
			RegBaseC c = new RegBaseC();
			c.setLjzh(dto.getZbm());
			c.setZid(zrz.getId());
			c.setZrzh(dto.getZrzh());
		    c.setCh((Integer.parseInt(dto.getQsc())+m)+"");
		   List<RegBaseC> clist = cService.findList(c);
		   //如果此户为删除,没必要进行层的创建,总层数的删除走楼栋同步
		  if(!"-2".equals(dto.getZt()) && !"-1".equals(dto.getZt())) {
		   c.setIsaudit("1");
		   if (clist.size() > 0) {
			c = clist.get(0);
		   }
		  c.setYsdm("6001030130");
		  c.setZid(zrz.getId());
		  c.setSjc((Integer.parseInt(dto.getQsc())+m)+ "");
	    	if(dto.getWlc()<0) {
			c.setIsnegativelayer("1");//负层
		 }else {
			c.setIsnegativelayer("0");
		 }
		  c.setMyc((Integer.parseInt(dto.getQsc())+m)+ "");
		  cService.save(c);
		  if(m==0) {//跨层时,户的CID为起始层ID
			  cid = c.getId();
		  }
	  	 }else {
			 //删除整层时,之前创建的层需要删除层信息
			 if (clist.size() > 0) {
					c = clist.get(0);
					RegBaseH regh = new RegBaseH();
					regh.setCid(c.getId());
					List<RegBaseH> list = hService.findList(regh);
					if(list.size()==0) {
					  cService.delete(c);
					 }
					if(m==0) {
						  cid = c.getId();
					  }	
			 }
		 }
		  m++;
		}while(m <= num);
		
	h.setBdcdyh(dto.getBdcdyh());
	h.setIsyiyi("3");
	List<RegBaseH> hlist = hService.findQJList(h);//查询出非灭失数据
	h.setRights("0");// 0 未登记 1 期房  2现房 3灭失
	h.setIslogout("0");
	h.setIschafeng("0");
	h.setIsdiya("0");
	h.setIsyiyi("0");
	h.setIszy("0");
	h.setIsaudit("1");
	h.setFybh(dto.getBmfhouseid());
	h.setBtfwbm(dto.getBmfhouseid());
	// 获取到当前已有幢中的最大标识码
	String fwbm = "1000000";
	fwbm = RegUtils.getHMaxFwbm(hService.getHMaxFwbm());// 没有的时候返回100000,然后+1最为第一笔
	h.setFwbm(fwbm);
	if("2".equals(dto.getFwsyz())) {
		h.setIsaudit("0");//公共部位不予发证,设置为未审核状态无法选择
	}
	if(hlist.size()>0) {
		h = hlist.get(0);
	}
	
	h.setCid(cid);
	h.setYsdm("6001030140");
	h.setZrzh(dto.getZrzh());
	h.setLjzh(dto.getZbm());
	h.setCh(dto.getWlc()+"");
	h.setZl(dto.getFwzl());
	h.setMjdw("1");
	h.setSjcs(dto.getZcs()+"");
	h.setHh(dto.getHbh());
	h.setShbw(dto.getShbw());
	h.setHx(dto.getHx());
	h.setHxjg(dto.getHxjg());
	h.setFwyt1(dto.getFwyt());
	h.setFwyt2(dto.getFwyt2());
	h.setFwyt3(dto.getFwyt3());
	h.setScjzmj(dto.getJzmj()==null?0:dto.getJzmj());
	h.setSctnjzmj(dto.getTnjzmj()==null?0:dto.getTnjzmj());
	h.setScftjzmj(dto.getFtjzmj()==null?0:dto.getFtjzmj());
	h.setScdxbfjzmj(dto.getDxbfjzmj()==null?0:dto.getDxbfjzmj());
	h.setScqtjzmj(dto.getQtjzmj()==null?0:dto.getQtjzmj());
	h.setScftxs(dto.getFtxs()==null?0:dto.getFtxs());
	h.setGytdmj(dto.getGytdmj()==null?0:dto.getGytdmj());
	h.setFttdmj(dto.getFttdmj()==null?0:dto.getFttdmj());
	h.setDytdmj(dto.getDytdmj()==null?0:dto.getDytdmj());
	h.setFwlx(dto.getFwlx());
	h.setFwlxmc(DictUtils.getDictLabel(dto.getFwlx(), "reg_bus_fwlx", ""));
	h.setFwxz(dto.getFwxz());
	h.setFwxzmc(DictUtils.getDictLabel(dto.getFwxz(), "reg_bus_fwxz", ""));
	h.setZt(dto.getZt());
	h.setXmmc(dto.getXmmc());
	h.setSjc(dto.getWlc()+"");
	h.setYtmc(DictUtils.getDictLabel(dto.getFwyt(), "reg_bus_fwyt", ""));
	h.setZddm(dto.getZddm());
	h.setQlxz(dto.getQlxz());
	h.setYcjzmj(dto.getYcjzmj()==null?0:dto.getYcjzmj());
	h.setYctnjzmj(dto.getYctnjzmj()==null?0:dto.getYctnjzmj());
	h.setYcftjzmj(dto.getYcftjzmj()==null?0:dto.getYcftjzmj());
	h.setBeginc(dto.getQsc()+"");
	h.setEndc(dto.getZzc()+"");
	if(dto.getWlc()<0) {
		h.setXyposition("-" + RegUtils.getHInfoFomart(String.valueOf(Math.abs(dto.getWlc())))+ RegUtils.getHInfoFomart(dto.getHbh()));
	}else {
	    h.setXyposition(RegUtils.getHInfoFomart(dto.getWlc()+"") + RegUtils.getHInfoFomart(dto.getHbh()));
	}
	h.setJgzwmc(zrz.getGzwmc());
	if(dto.getZt().equals("0")) {
		h.setRights("4");//分割合并前的
		//不要问权籍为啥有这么多状态
	}else if(dto.getZt().equals("-1")||dto.getZt().equals("-2")||dto.getZt().equals("2")||dto.getZt().equals("3")||dto.getZt().equals("4")) {
		h.setDelFlag("2");//权籍非有效状态
	}else if(dto.getZt().equals("1")) {
		h.setDelFlag("0");//权籍有效状态
	}
		hService.save(h);
		}
	}
}
	}

}