/**
* @Project: hehenian-biz-service
* @Package com.hehenian.biz.component.loan
* @Title: ILoanDetailComponent.java
* @Description: TODO
* @author: liuzgmf
* @date 2014年12月11日 上午9:54:53
* @Copyright: HEHENIAN Co.,Ltd. All rights reserved.
* @version V1.0
*/
package com.hehenian.biz.component.loan.impl;
import java.math.BigDecimal;
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.Component;
import com.hehenian.biz.common.loan.dataobject.CertificateDo;
import com.hehenian.biz.common.loan.dataobject.JobDo;
import com.hehenian.biz.common.loan.dataobject.LoanDo;
import com.hehenian.biz.common.loan.dataobject.LoanPersonDo;
import com.hehenian.biz.common.loan.dataobject.LoanRelationDo;
import com.hehenian.biz.common.loan.dataobject.PropertyDo;
import com.hehenian.biz.common.trade.dataobject.RepaymentDo;
import com.hehenian.biz.common.util.CalculateUtils;
import com.hehenian.biz.component.loan.ILoanJobComponent;
import com.hehenian.biz.component.loan.ILoanPersonComponent;
import com.hehenian.biz.component.loan.ILoanPropertyComponent;
import com.hehenian.biz.component.loan.ILoanRelationComponent;
import com.hehenian.biz.dal.loan.ICertificateDao;
import com.hehenian.biz.dal.loan.IJobDao;
import com.hehenian.biz.dal.loan.ILoanDao;
import com.hehenian.biz.dal.loan.ILoanPersonDao;
import com.hehenian.biz.dal.loan.ILoanRelationDao;
import com.hehenian.biz.dal.loan.IPropertyDao;
/**
* @author xiexiangmf
*
*/
@Component("loanPersonComponent")
public class LoanPersonComponentImpl implements ILoanPersonComponent {
@Autowired
private ILoanPersonDao loanpersonDao;
@Autowired
private ILoanDao loanDao;
@Autowired
private IJobDao jobDao;
@Autowired
private IPropertyDao propertyDao;
@Autowired
private ILoanRelationDao loanRelationDao;
@Autowired
private ICertificateDao certificateDao;
@Autowired
private ILoanJobComponent loanJobComponent;
@Autowired
private ILoanRelationComponent relationComponent;
@Autowired
private ILoanPropertyComponent loanPropertyComponent;
/**
* @author wangt
*/
@Override
public void saveJobInfo(JobDo jobDo){
if (jobDo != null && jobDo.getJobId() != null) {
jobDao.updateJob(jobDo);
} else {
jobDao.addJob(jobDo);
}
}
@Override
public void updateRelationList(List<LoanRelationDo> loanRelationDoList,long loanId,long loanPersonId){
if (loanRelationDoList != null && loanRelationDoList.size() > 0) {
for (LoanRelationDo loanRelationDo : loanRelationDoList) {
loanRelationDo.setLoanId(loanId);
loanRelationDo.setLoanPersonId(loanPersonId);
if (loanRelationDo.getRalationId() != null) {
loanRelationDao.updateLoanRelation(loanRelationDo);
} else {
if(StringUtils.isNotBlank(loanRelationDo.getRalationName()) ){
loanRelationDao.addLoanRelation(loanRelationDo);
}
}
}
}
}
@Override
public void updateLoanPerson(LoanPersonDo loanPersonDo) {
loanpersonDao.updateLoanPerson(loanPersonDo);
LoanDo loanDo = loanPersonDo.getLoanDo();
if (loanDo != null && loanDo.getLoanId() != null) {
loanDao.updateLoanDo(loanDo);
}
// 插入或更新jobDo数据
JobDo jobDo = loanPersonDo.getJobDo();
if(null != jobDo ){
jobDo.setLoanId(loanPersonDo.getLoanId());
jobDo.setLoanPersonId(loanPersonDo.getLoanPersonId());
if (jobDo != null && jobDo.getJobId() != null) {
jobDao.updateJob(jobDo);
} else {
jobDao.addJob(jobDo);
}
}
PropertyDo propertyDo = loanPersonDo.getPropertyDo();
if(null != propertyDo){
propertyDo.setLoanId(loanPersonDo.getLoanId());
propertyDo.setLoanPersonId(loanPersonDo.getLoanPersonId());
if (propertyDo != null && propertyDo.getPropertyId() != null) {
propertyDao.updateProperty(propertyDo);
} else {
propertyDao.addProperty(propertyDo);
}
}
// 附件上传
List<CertificateDo> certificateDoList = loanPersonDo.getCertificateDoList();
if (certificateDoList != null && certificateDoList.size() > 0) {
for (CertificateDo certificateDo : certificateDoList) {
if (certificateDo.getCertificateId() != null) {
certificateDao.updateCertificate(certificateDo);
} else {
certificateDao.addCertificate(certificateDo);
}
}
}
List<LoanRelationDo> loanRelationDoList = loanPersonDo.getLoanRelationDoList();
if (loanRelationDoList != null && loanRelationDoList.size() > 0) {
for (LoanRelationDo loanRelationDo : loanRelationDoList) {
loanRelationDo.setLoanId(loanPersonDo.getLoanId());
loanRelationDo.setLoanPersonId(loanPersonDo.getLoanPersonId());
if (loanRelationDo.getRalationId() != null) {
loanRelationDao.updateLoanRelation(loanRelationDo);
} else {
loanRelationDao.addLoanRelation(loanRelationDo);
}
}
}
}
@Override
public List<LoanPersonDo> queryLoanPerson(Map<String, Object> searchItems) {
return loanpersonDao.queryLoanPersons(searchItems);
}
@Override
public LoanPersonDo getCountByIds(Long loanId) {
return loanpersonDao.getLoanPersonByIds(loanId);
}
@Override
public void addLoanPerson(LoanPersonDo loanPersonDo) {
loanpersonDao.addLoanPerson(loanPersonDo);
}
@Override
public int getTotalCount(Map<String, Object> searchItems) {
return loanpersonDao.getTotalCount(searchItems);
}
@Override
public int getAuditedTotalCount(Map<String, Object> searchItems) {
return loanpersonDao.getAuditedTotalCount(searchItems);
}
@Override
public List<LoanPersonDo> queryLoanAuditeds(Map<String, Object> searchItems) {
return loanpersonDao.queryLoanAuditeds(searchItems);
}
@Override
public LoanPersonDo getByLoanId(Long loanId) {
return loanpersonDao.getByLoanId(loanId);
}
@Override
public int saveLoanPerson(LoanPersonDo loanPersonDo) {
if (loanPersonDo == null) {
return 0;
}
if (loanPersonDo.getLoanPersonId() != null && loanPersonDo.getLoanPersonId().longValue() >= 0) {
return loanpersonDao.updateLoanPerson(loanPersonDo);
} else {
return loanpersonDao.addLoanPerson(loanPersonDo);
}
}
/**
* 更新个人信息,并保存子对象, 用于用户申报的时候第二提交个人资料和资产,job 联系人用的
* @param loanPersonDo
* @return
*/
@Override
public void saveLoanPersonChild(LoanPersonDo loanPersonDo){
LoanPersonDo oldPersonDo = this.getLoanPersonById(loanPersonDo.getLoanId());
oldPersonDo.setEducation(loanPersonDo.getEducation());
oldPersonDo.setMarriaged(loanPersonDo.getMarriaged());
oldPersonDo.setEmail(loanPersonDo.getEmail());
loanpersonDao.updateLoanPerson(oldPersonDo);//保存更新
Double houseArea = null;
long loanId = loanPersonDo.getLoanId();
//处理借款人个人信息
if (loanPersonDo != null) {
//个人ID
long personId = oldPersonDo.getLoanPersonId();
//job
if (loanPersonDo.getJobDo() != null) { //工作
JobDo jobDo = loanPersonDo.getJobDo();
jobDo.setLoanId(loanId);
jobDo.setLoanPersonId(personId);
JobDo jobDotemp =loanJobComponent.getJobByIds(loanId+"");
if(jobDotemp==null){
loanJobComponent.addJob(loanPersonDo.getJobDo());
}else{
loanPersonDo.getJobDo().setJobId(jobDotemp.getJobId());
loanJobComponent.updateJob(loanPersonDo.getJobDo());
}
}
//联系人
relationComponent.deleteLoanRelationByLoanId(loanId);
if (loanPersonDo.getLoanRelationDoList() != null && loanPersonDo.getLoanRelationDoList().size()>0) {
for(LoanRelationDo relation: loanPersonDo.getLoanRelationDoList()){
relation.setLoanId(loanId);
relation.setLoanPersonId(personId);
relationComponent.addLoanRelation(relation);
}
}
//资产
if(loanPersonDo.getPropertyDo() != null){
PropertyDo propertyDo1 =loanPropertyComponent.getCountByIds(loanId);
PropertyDo propertyDo = loanPersonDo.getPropertyDo();
//暂存房子面积,用来计算房价
if("T".equals(oldPersonDo.getHasHouse())){
houseArea = propertyDo.getCoveredArea();
}
propertyDo.setLoanId(loanId);
propertyDo.setLoanPersonId(personId);
if(propertyDo1==null){
loanPropertyComponent.addProperty(propertyDo);
}else{
propertyDo.setPropertyId(propertyDo1.getPropertyId());
loanPropertyComponent.updateProperty(propertyDo);
}
}
}
//计算房价, 更具房价更新风控金额
if("T".equals(oldPersonDo.getHasHouse()) && null != houseArea){
double price = getCnameHousePriceById(oldPersonDo.getCid());
double houseAmount = CalculateUtils.mul(price, houseArea);
houseAmount = CalculateUtils.mul(0.1, houseAmount);
LoanDo houseLoanDo = new LoanDo();
houseLoanDo.setAuditAmount(BigDecimal.valueOf(houseAmount));
houseLoanDo.setLoanId(loanId);
loanDao.updateLoanDo(houseLoanDo);
}
}
/**
* 获取小区房价
* @param cid 小区ID
* @return
*/
public double getCnameHousePriceById(Long cid){
List<Map<String,Object>> cList = loanDao.getCname(cid);
if(null == cList || cList.size()<1){
return 0;
}
Map<String,Object> cname = cList.get(0);
BigDecimal price = cname.get("housePrice")==null?BigDecimal.ZERO:(BigDecimal)cname.get("housePrice");
// BigDecimal price = (BigDecimal) cname.get("housePrice");
return price.doubleValue();
}
@Override
public LoanPersonDo initTreatyData(Map<String, Object> searchItems) {
return loanpersonDao.initTreatyData(searchItems);
}
@Override
public Map<String, Object> getYqsl(Map<String, Object> searchItems) {
return loanpersonDao.getYqsl(searchItems);
}
@Override
public int getManagerTotalCount(Map<String, Object> searchItems) {
return loanpersonDao.getManagerTotalCount(searchItems);
}
@Override
public List<LoanPersonDo> getLoanManager(Map<String, Object> searchItems) {
return loanpersonDao.getLoanManager(searchItems);
}
@Override
public List<RepaymentDo> getRepayMentByBwId(Long borrowId) {
return loanpersonDao.getRepayMentByBwId(borrowId);
}
@Override
public Map<String, Object> getdLYqsl(Map<String, Object> searchItems) {
return loanpersonDao.getdLYqsl(searchItems);
}
@Override
public Map<String, Object> getIncomeManager(Map<String, Object> searchItems) {
return loanpersonDao.getIncomeManager(searchItems);
}
@Override
public List<LoanPersonDo> queryLoanPersonByApp(
Map<String, Object> searchItems) {
return loanpersonDao.queryLoanPersonsByApp(searchItems);
}
@Override
public Map<String, Object> getSumLoan(Map<String, Object> searchItems) {
return loanpersonDao.getSumLoan(searchItems);
}
@Override
public Map<String, Object> getSumBorrowing(Map<String, Object> searchItems) {
return loanpersonDao.getSumBorrowing(searchItems);
}
@Override
public Map<String, Object> getSumBorrowed(Map<String, Object> searchItems) {
return loanpersonDao.getSumBorrowed(searchItems);
}
@Override
public List<LoanPersonDo> queryLoanBorrowByApp(
Map<String, Object> searchItems) {
return loanpersonDao.queryLoanBorrowByApp(searchItems);
}
@Override
public LoanPersonDo getLoanPersonById(Long loanId) {
return loanpersonDao.getLoanPersonById(loanId);
}
}