/*package com.hehenian.lend.manager.time.task;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.hehenian.biz.common.loan.ICommonService;
import com.hehenian.biz.common.loan.ILoanLogService;
import com.hehenian.biz.common.loan.IManagerLoanService;
import com.hehenian.biz.common.loan.dataobject.ContactVO;
import com.hehenian.biz.common.loan.dataobject.LoanDo;
import com.hehenian.biz.common.loan.dataobject.LoanLogDo;
import com.hehenian.biz.common.loan.dataobject.LoanPersonDo;
import com.hehenian.biz.common.system.ISettSchemeService;
import com.hehenian.biz.common.system.dataobject.SettSchemeDo;
import com.hehenian.biz.common.util.CalculateUtils;
import com.hehenian.biz.common.util.DateUtils;
import com.hehenian.biz.common.util.HttpClientUtils;
*//*
@Component
public class InitRepayPlanTask {
private Logger logger = Logger.getLogger(InitRepayPlanTask.class);
@Autowired
private IManagerLoanService managerLoanService ;
@Autowired
private ILoanLogService loanLogService;
@Autowired
private ICommonService commonService;
@Autowired
private ISettSchemeService settSchemeService;
@Value("#{sysconfig['loan.fk.url']}")
private String loanFkUrl ;
//@Scheduled(cron="0 0 22 * * ?")
public void doJob(){
logger.debug("生成还款计划表任务进行中。。。。。。。。。。。。");
String key = "HHN&XD#$%CD%des$" ;
String pushDataStr = pushData();
if(StringUtils.isNotBlank(pushDataStr)){
try {
JSONObject data = JSONObject.fromObject(pushDataStr);
if("true".equals(data.get("success").toString())){
JSONArray loanList = (JSONArray)data.get("loanList");
String sign = data.get("sign").toString();
String checkSign = DigestUtils.md5Hex(key+loanList.toString()+key);
if(!(checkSign.equals(sign))){
LoanLogDo log = new LoanLogDo();
log.setLogType(2);
log.setLogMsg("数据验证失败!");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
}else{
initRepay(loanList);
}
// initRepay(loanList);
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
LoanLogDo log = new LoanLogDo();
log.setLogType(2);
log.setLogMsg("拉取数据生成还款计划表异常!");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
}
}
}
private String pushData(){
JSONObject data = new JSONObject();
data.put("success",true);
data.put("sign", "");
JSONArray loanArr = new JSONArray();
JSONObject loandata = new JSONObject();
loandata.put("realName", "何鲁丽");
loandata.put("idNo", "430621198809171818");
loandata.put("loanDate", "2015/04/30");
loandata.put("borrowAmount", "100000.00");
loandata.put("loanPeriod", "10");
loandata.put("businessNo", "D031505060001");
loandata.put("platform", "合和年在线");
loandata.put("annualRate", "19.20");
loanArr.add(loandata);
data.put("loanList", loanArr);
String pushDataStr = null;
try {
pushDataStr = data.toString();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return pushDataStr;
String loanDate = DateUtils.getCurrentDateAsStringByBackSlant();
// loanDate="2015/05/12";
String key = "HHN&XD#$%CD%des$" ;
String sign = DigestUtils.md5Hex(key+loanDate+key);
StringBuffer url = new StringBuffer(loanFkUrl+"?loanDate=");
url.append(loanDate);
url.append("&sign=").append(sign);
System.out.println("====================================");
System.out.println(url.toString());
System.out.println("====================================");
String res = null;
try {
res = HttpClientUtils.get(url.toString());
} catch (Exception e) {
e.printStackTrace();
}
return res ;
}
private boolean checkData(JSONObject loan,Map<String,LoanPersonDo> map){
String orderCode = null;
try {
orderCode = loan.get("businessNo").toString();
} catch (Exception e) {
e.printStackTrace();
}
if(StringUtils.isNotBlank(orderCode)){
LoanLogDo log = new LoanLogDo();
log.setLogType(2);
log.setOrderCode(orderCode);
try {
LoanPersonDo loanPersonDo = managerLoanService.getLoanInfoForFkByOrderCode(orderCode);
if(loanPersonDo == null){
log.setLogMsg("生成订单还款计划表失败,订单信息不存在!");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
return false;
}
if(!(LoanDo.LoanStatus.SUBJECTED.toString().equals(loanPersonDo.getLoanDo().getLoanStatus().toString()))){
log.setLogMsg("生成订单还款计划表失败,订单不是上标状态!");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
return false;
}
String realName = loan.get("realName").toString();
String idNo = loan.get("idNo").toString();
double borrowAmount = Double.valueOf(loan.get("borrowAmount").toString());
int loanPeriod = Integer.parseInt(loan.get("loanPeriod").toString());
double annualRate = Double.valueOf(loan.get("annualRate").toString());
Date loanDate = DateUtils.parseDateOrNull(loan.get("loanDate").toString(), DateUtils.Format_Date_back_slant);
int channel = Integer.parseInt(loan.get("channel").toString());
loanPersonDo.setChannel(channel);
if(!(realName.equals(loanPersonDo.getRealName()))){
log.setLogMsg("生成订单还款计划表失败,订单用户姓名不一致!db["+loanPersonDo.getRealName()+"],pushData["+realName+"]");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
return false ;
}
if(!(idNo.equals(loanPersonDo.getIdNo()))){
log.setLogMsg("生成订单还款计划表失败,订单用户身份证号码不一致!db["+loanPersonDo.getIdNo()+"],pushData["+idNo+"]");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
return false ;
}
if(!CalculateUtils.eq(CalculateUtils.round(borrowAmount, 2),CalculateUtils.round(loanPersonDo.getLoanDo().getApplyAmount(), 2))){
log.setLogMsg("生成订单还款计划表失败,订单金额不一致!db["+loanPersonDo.getLoanDo().getApplyAmount()+"],pushData["+borrowAmount+"]");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
return false ;
}
if(loanPeriod != loanPersonDo.getLoanDo().getLoanPeriod()){
log.setLogMsg("生成订单还款计划表失败,订单借款期限不一致!db["+loanPersonDo.getLoanDo().getLoanPeriod()+"],pushData["+loanPeriod+"]");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
return false ;
}
if(CalculateUtils.le(annualRate, 0d)){
log.setLogMsg("生成订单还款计划表失败,投资年利率异常! annualRate["+annualRate+"]");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
return false ;
}
if(loanDate == null){
log.setLogMsg("生成订单还款计划表失败,放款日期异常! loanDate["+loan.get("loanDate").toString()+"]");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
return false ;
}
loanPersonDo.getLoanDo().setOrderCode(orderCode);
loanPersonDo.getLoanDo().setLoanAmount(borrowAmount);
loanPersonDo.getLoanDo().setLoanTime(loanDate);
loanPersonDo.getLoanDo().setInvestAnnualRate(annualRate);
loanPersonDo.getLoanDo().setLoanStatus(LoanDo.LoanStatus.REPAYING);
map.put("loanPersonDo", loanPersonDo);
return true ;
} catch (Exception e) {
logger.error(e.getMessage(), e);
log.setLogMsg("生成订单还款计划表失败,订单参数异常! pushData["+loan.toString()+"]");
log.setLogStatus(1);
loanLogService.addLoanLog(log);
}
return false ;
}
return false ;
}
private void initRepay(JSONArray loanList) throws Exception{
System.out.println("===============================");
System.out.println(loanList.toString());
System.out.println("===============================");
if(loanList != null && loanList.size()>0){
Map<String,LoanPersonDo> map = new HashMap<String,LoanPersonDo>();
for(int i=0;i<loanList.size();i++){
JSONObject loan = (JSONObject)loanList.get(i);
if(checkData(loan,map)){
LoanPersonDo loanPersonDo = map.get("loanPersonDo");
LoanDo loanDo = loanPersonDo.getLoanDo();
LoanLogDo initLog = new LoanLogDo();
initLog.setLogType(2);
initLog.setLoanId(loanDo.getLoanId());
initLog.setOrderCode(loanDo.getOrderCode());
boolean res = managerLoanService.initRepayPlan(loanDo);
if(res){
initLog.setLogMsg("生成订单还款计划表成功....");
initLog.setLogStatus(0);
}else{
initLog.setLogMsg("生成订单还款计划表失败....");
initLog.setLogStatus(1);
}
loanLogService.addLoanLog(initLog);
}
}
}
}
public void initProtocol(LoanPersonDo loanPersonDo){
ContactVO cv = new ContactVO();
cv.setUrl("");
cv.setRealName(loanPersonDo.getRealName());
cv.setIdNo(loanPersonDo.getIdNo());
cv.setCmd("save");
cv.setOrderCode(loanPersonDo.getLoanDo().getOrderCode());
List<Map<String,Object>> list = null;
if(loanPersonDo.getChannel() == 1){
list = managerLoanService.getSbNameForHF(loanPersonDo.getLoanDo().getOrderCode());
}
if(loanPersonDo.getChannel() == 2){
list = managerLoanService.getSbNameForTL(loanPersonDo.getLoanDo().getOrderCode());
}
StringBuffer lendUserName = new StringBuffer("");
StringBuffer lendIdNo = new StringBuffer("");
if(list != null && list.size()>0){
for(Map<String,Object> m:list){
if(m.get("realName") != null){
lendUserName.append(String.valueOf(m.get("realName"))).append(",");
}
if(m.get("userId") != null){
lendUserName.append(String.valueOf(m.get("userId"))).append(",");
}
}
}
if(lendUserName.length()>1){
lendUserName.setLength(lendUserName.length()-1);
}
if(lendIdNo.length()>1){
lendIdNo.setLength(lendIdNo.length()-1);
}
cv.setLendUserName(lendUserName.toString());
cv.setLendIdNo(lendIdNo.toString());;
cv.setBorrowerName(loanPersonDo.getRealName());
cv.setBorrowerIdNo(loanPersonDo.getIdNo());
cv.setLoanAmount(String.valueOf(loanPersonDo.getLoanDo().getLoanAmount()));
SettSchemeDo ssDo = settSchemeService.getBySchemeId(loanPersonDo.getLoanDo().getSchemeId());
cv.setRepayType(ssDo.getSchemeName());
cv.setYearRate(loanPersonDo.getLoanDo().getAnnualRate()+"%");
cv.setLoanPeriod(String.valueOf(loanPersonDo.getLoanDo().getLoanPeriod()));
cv.setLoanDay(DateUtils.formatDate(loanPersonDo.getLoanDo().getLoanTime(),DateUtils.Format_Date));
cv.setRepayDay(String.valueOf(DateUtils.getDayOfMonth(loanPersonDo.getLoanDo().getLoanTime())));
Date limitDate = DateUtils.getMonthAfter(loanPersonDo.getLoanDo().getLoanTime(),loanPersonDo.getLoanDo().getLoanPeriod());
cv.setLimitTime(DateUtils.formatDate(limitDate,DateUtils.Format_Date));
Map<String,Object> accMap = null ;
if(loanPersonDo.getChannel() == 1){
accMap = managerLoanService.getBankAccountForHF(loanPersonDo.getIdNo());
}
if(loanPersonDo.getChannel() == 2){
accMap = managerLoanService.getBankAccountForTL(loanPersonDo.getIdNo());
}
if(accMap != null && accMap.get("cardNo") != null){
cv.setAccount(accMap.get("cardNo").toString());
}else{
cv.setAccount("");
}
cv.setLoanUsage(loanPersonDo.getLoanDo().getLoanUsage());
commonService.generateContactPdf(cv);
}
public static void main(String args[]){
String loanDate = DateUtils.getCurrentDateAsStringByBackSlant();
String key = "HHN&XD#$%CD%des$" ;
String sign = DigestUtils.md5Hex(key+loanDate+key);
StringBuffer url = new StringBuffer("http://192.168.16.193//loan.do?loanDate=");
url.append("2015/05/05");
url.append("&sign=").append(sign);
System.out.println("====================================");
System.out.println(url.toString());
System.out.println("====================================");
String res = null;
try {
res = HttpClientUtils.get(url.toString());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(res);
}
}
*/