package com.hehenian.biz.component.loan.impl; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.hehenian.biz.common.exception.BusinessException; import com.hehenian.biz.common.loan.dataobject.JobDo; import com.hehenian.biz.common.loan.dataobject.LoanChannelDo; import com.hehenian.biz.common.loan.dataobject.LoanDo; import com.hehenian.biz.common.loan.dataobject.LoanDo.LoanStatus; import com.hehenian.biz.common.loan.dataobject.LoanDo.ProcessStep; import com.hehenian.biz.common.loan.dataobject.LoanPersonDo; import com.hehenian.biz.common.loan.dataobject.LoanProxyCheckDo; import com.hehenian.biz.common.loan.dataobject.LoanRelationDo; import com.hehenian.biz.component.loan.ILoanComponent; import com.hehenian.biz.component.loan.ILoanJobComponent; import com.hehenian.biz.component.loan.ILoanPersonComponent; import com.hehenian.biz.component.loan.ILoanRelationComponent; import com.hehenian.biz.dal.loan.ILoanDao; import com.hehenian.biz.dal.loan.ILoanProxyCheckDao; /** * @author xiexiangmf * */ @Component("loanComponent") public class LoanComponentImpl implements ILoanComponent { @Autowired private ILoanDao loanDao; @Autowired private ILoanPersonComponent loanPersonComponent; @Autowired private ILoanJobComponent loanJobComponent; @Autowired private ILoanRelationComponent relationComponent; @Autowired private ILoanProxyCheckDao loanProxyCheckDao; @Override public Long addLoanDo(LoanDo loanDo) { loanDao.addLoanDo(loanDo); return loanDo.getLoanId(); } @Override public void updateLoanDo(LoanDo loanDo) { if (loanDo == null) { return ; } loanDao.updateLoanDo(loanDo); //借款ID long loanId =loanDo.getLoanId(); //处理借款人个人信息 if (loanDo.getLoanPersonDo() != null) { LoanPersonDo loanPersonDo = loanDo.getLoanPersonDo(); loanPersonDo.setLoanId(loanDo.getLoanId()); if(loanPersonDo.getLoanPersonId() != null){ loanPersonComponent.updateLoanPerson(loanPersonDo); }else{ loanPersonComponent.addLoanPerson(loanPersonDo); } //个人ID long personId = loanPersonDo.getLoanPersonId(); if (loanPersonDo.getJobDo() != null) { //工作 JobDo jobDo = loanPersonDo.getJobDo(); jobDo.setLoanId(loanId); jobDo.setLoanPersonId(personId); if(jobDo.getJobId() !=null){ loanJobComponent.updateJob(loanPersonDo.getJobDo()); }else{ loanJobComponent.addJob(loanPersonDo.getJobDo()); } } //联系人 if (loanPersonDo.getLoanRelationDoList() != null && loanPersonDo.getLoanRelationDoList().size()>0) { // for(LoanRelationDo relation: loanPersonDo.getLoanRelationDoList()){ // relation.setLoanId(loanId); // relation.setLoanPersonId(personId); // relationComponent.addLoanRelation(relation); // } loanPersonComponent.updateRelationList(loanPersonDo.getLoanRelationDoList(), loanId, personId); } } } /** * 获取下个状态 * @param loanDo * @return */ @Override public LoanStatus getNextStatus(LoanStatus currentStatus, ProcessStep currentStep ,Double applayAmount ){ if(LoanStatus.PROCESSING.equals(currentStatus)&&ProcessStep.INPUT_CREDIT_REPORT.equals(currentStep)){ if(applayAmount.doubleValue() >= 300000){ return LoanStatus.PROCESSING; }else{ return LoanStatus.AUDITED; } } return LoanStatus.DRAFT; } /** * 获取下个步骤 * @param loanDo * @return */ @Override public ProcessStep getNextStep(LoanDo loanDo){ Double applayAmount = loanDo.getApplyAmount(); ProcessStep currentStep = loanDo.getProcessCurrentStep(); LoanStatus currentStatus = loanDo.getLoanStatus(); if(LoanStatus.PROCESSING.equals(currentStatus)&&ProcessStep.INPUT_CREDIT_REPORT.equals(currentStep)){ if(applayAmount.doubleValue() >= 300000){ return ProcessStep.XIAODAI_AUDIT; }else{ return ProcessStep.TO_SUBJECT; } } return ProcessStep.NULL; } @Override public int changeLoanStatus(LoanDo loanDo) { return loanDao.changeLoanStatus(loanDo); } @Override public LoanDo getByIdNo(String idNo) { return null; } @Override public int getLoanQty() { return loanDao.getLoanQty(); } @Override public Long saveLoan(LoanDo loanDo) { if (loanDo == null) { return 0l; } if (loanDo.getLoanId() != null && loanDo.getLoanId().intValue() > 0) { loanDao.updateLoanDo(loanDo); } else { if(null==loanDo.getCreateTime()){ loanDao.addLoanDo(loanDo); }else{ loanDao.addLoanDo1(loanDo); } } //借款ID long loanId =loanDo.getLoanId(); //处理借款人个人信息 if (loanDo.getLoanPersonDo() != null) { LoanPersonDo loanPersonDo = loanDo.getLoanPersonDo(); loanPersonDo.setLoanId(loanDo.getLoanId()); loanPersonComponent.saveLoanPerson(loanDo.getLoanPersonDo()); //个人ID long personId = loanPersonDo.getLoanPersonId(); if (loanPersonDo.getJobDo() != null) { //工作 JobDo jobDo = loanPersonDo.getJobDo(); jobDo.setLoanId(loanId); jobDo.setLoanPersonId(personId); loanJobComponent.addJob(loanDo.getLoanPersonDo().getJobDo()); } //联系人 if (loanPersonDo.getLoanRelationDoList() != null && loanPersonDo.getLoanRelationDoList().size()>0) { for(LoanRelationDo relation: loanPersonDo.getLoanRelationDoList()){ relation.setLoanId(loanId); relation.setLoanPersonId(personId); relationComponent.addLoanRelation(relation); } } } return loanDo.getLoanId(); } @Override public LoanDo getByLoanId(Long loanId) { return loanDao.getByLoanId(loanId); } @Override public List<LoanDo> queryBySourceUserId(String sourceUserId) { return loanDao.queryBySourceUserId(sourceUserId); } @Override public Map<String, Object> getTotalInfoByPerson(LoanChannelDo loanChannelDo) { List<LoanDo> myLoanList = loanDao.getMyLoanList(loanChannelDo.getId()+""); List<LoanDo> refLoanList = loanDao.getMyRefLoanList(loanChannelDo.getLoanUserDo().getMobile()); int lateCount = loanDao.queryLateCount(loanChannelDo.getId()+""); Map<String,Object> resultMap = new HashMap<String,Object>(); if(myLoanList != null ){ resultMap.put("myLoan", myLoanList.size()); } if(refLoanList != null ){ resultMap.put("refLoanList", refLoanList.size()); } resultMap.put("lateCount", lateCount); return resultMap; } public String getCmoblie(long cid){ return loanDao.getCmoblie(cid); } /** * 查询小区的清单 * @return */ @Override public List<Map<String, Object>> getAreaList(Map<String,Object> paramMap){ return loanDao.getAreaList(paramMap); } /** * 根据条件查询 * @param loanDo */ @Override public List<LoanDo> selectLoanList(LoanDo loanDo) { return loanDao.selectLoanList(loanDo); } /********************审核API**************************/ @Override public LoanProxyCheckDo getProxyCheckDoById(Long id) { return loanProxyCheckDao.getById(id); } public String loanProxyCheckKey(LoanProxyCheckDo loanProxyCheckDo){ String key=loanProxyCheckDo.getNameCode()==null?"":loanProxyCheckDo.getNameCode(); key+=loanProxyCheckDo.getFieldName()==null?"":loanProxyCheckDo.getFieldName(); return key.trim(); } @Override public List<LoanProxyCheckDo> selectLoanProxyCheck(Map<String, Object> parameterMap) { // Map<String, Integer> tempMap =new HashMap<String, Integer>(); // List<LoanProxyCheckDo> tempList= loanProxyCheckDao.selectLoanProxyCheck(parameterMap); // if(null!=tempList&&tempList.size()>0){ // for(LoanProxyCheckDo temp:tempList){ // String key=loanProxyCheckKey(temp); // if(key.length()>0){ // tempMap.put(key, temp.getStatus()==null?0:temp.getStatus()); // } // } // } // return tempMap; return loanProxyCheckDao.selectLoanProxyCheck(parameterMap); } @Override public int updateLoanProxyCheckById(LoanProxyCheckDo newLoanProxyCheckDo) { int result = loanProxyCheckDao.updateLoanProxyCheckById(newLoanProxyCheckDo); if(result<1){ throw new BusinessException("审核资料更新出错:newLoanProxyCheckDo id is "+newLoanProxyCheckDo.getId()); } return result; } @Override public int addLoanProxyCheck(LoanProxyCheckDo newLoanProxyCheckDo) { int result = loanProxyCheckDao.addLoanProxyCheck(newLoanProxyCheckDo); if(result<1){ throw new BusinessException("审核资料新增出错:newLoanProxyCheckDo: "+newLoanProxyCheckDo); } return result; } /********************END 审核API**************************/ @Override public List<Map<String, Object>> getJBCmobileDo(Map<String, String> params) { return loanDao.getJBCmobileDo(params); } @Override public int updateHousePrice(Map<String, Object> parameterMap) { return loanDao.updateHousePrice( parameterMap); } @Override public int saveHousePrice(Map<String, Object> parameterMap) { return loanDao.saveHousePrice(parameterMap); } @Override public LoanDo getByIdNoGroup(String idNo) { return loanDao.getByIdNoGroup( idNo) ; } }