/** * @Project: hehenian-web * @Package com.hehenian.web.view.loan.action * @Title: LoanInfoAction.java * @Description: TODO * @author: liuzgmf * @date 2015年4月20日 下午3:21:36 * @Copyright: HEHENIAN Co.,Ltd. All rights reserved. * @version V1.0 */ package com.hehenian.web.view.loan.action; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; 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.apache.struts2.interceptor.ServletRequestAware; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.hehenian.biz.common.account.IUserService; import com.hehenian.biz.common.account.dataobject.AccountUserDo; import com.hehenian.biz.common.base.dataobject.NPageDo; import com.hehenian.biz.common.base.result.IResult; import com.hehenian.biz.common.loan.ILoanInfoService; import com.hehenian.biz.common.loan.dataobject.LoanInfoDo; import com.hehenian.biz.common.loan.dataobject.LoanInfoDo.LoanStatus; import com.hehenian.web.common.contant.WebConstants; import com.hehenian.web.common.util.ServletUtils; import com.opensymphony.xwork2.ActionSupport; import com.shove.Convert; import com.sp2p.constants.IConstants; import com.sp2p.entity.Admin; import com.sp2p.service.admin.BorrowManageService; import com.sp2p.util.WebUtil; /** * * @author: liuzgmf * @date 2015年4月20日 下午3:21:36 */ @Scope("prototype") @Component("loanInfoAction") public class LoanInfoAction extends ActionSupport implements ServletRequestAware { private static final long serialVersionUID = 1L; private final Logger logger = Logger.getLogger(this.getClass()); private DecimalFormat df = new DecimalFormat("##0.00"); private HttpServletRequest request; @Autowired private ILoanInfoService loanInfoService; @Autowired private IUserService userService; @Autowired private BorrowManageService borrowManageService; private LoanInfoDo loanInfoDo; private Long loanInfoId; private LoanStatus loanStatus; private List<Long> loanInfoIdList; @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException { Map<String, Object> param = new LinkedHashMap<String, Object>(); param.put("realName", "eric"); param.put("sex", "男"); param.put("age", 30); param.put("marriaged", "己婚"); param.put("residenceType", "买房"); param.put("education", "本科"); param.put("creditNum", 11l); param.put("creditAmt", 30000d); param.put("idNo", "542124198005267493"); param.put("carQty", 0); param.put("companyName", "合肥赛兰德家具有限公司"); param.put("companyAddress", "亳州路135号天庆大厦502室"); param.put("position", "总经理"); param.put("companyType", "私营企业 "); param.put("workYear", "10.8"); param.put("industry", "居家生活用品"); param.put("income", 520000d); param.put("expense", 173333.33); param.put("loanAmt", 60000d); param.put("loanPeriod", 12); param.put("productType", "生意贷"); param.put("repayType", "1");// param.put("loanAnnualRate", 27.6d); param.put("annualRate", 10.8d); param.put("tenderDay", 5); param.put("loanUsage", "家具公司经营周转"); param.put("consultant", "合和年信贷"); param.put("consultantBranch", "合肥分行"); param.put("borrowGroup", "0"); param.put("businessNo", " 000001"); List<Map<String, Object>> params = new ArrayList<Map<String, Object>>(); params.add(param); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(params); System.out.println(jsonString); System.out.println(DigestUtils.md5Hex(WebConstants.XD_PASS_KEY + jsonString + WebConstants.XD_PASS_KEY)); } /** * 新增借款标的信息 * * @return * @author: liuzgmf * @date: 2014年12月11日上午10:47:22 */ public String addLoanInfo() { String jsonString = request.getParameter("params"); String sign = request.getParameter("sign"); logger.info("params:" + jsonString + ",sign:" + sign); JSONObject jsonObject = new JSONObject(); if (StringUtils.isBlank(jsonString) || StringUtils.isBlank(sign) || !DigestUtils.md5Hex(WebConstants.XD_PASS_KEY + jsonString + WebConstants.XD_PASS_KEY) .equalsIgnoreCase(sign)) { jsonObject.put("success", false); jsonObject.put("message", "请求参数非法!"); ServletUtils.writeJson(jsonObject.toString()); return null; } List<LoanInfoDo> loanInfoDoList = getLoanInfos(jsonString); IResult<?> result = loanInfoService.addLoanInfo(loanInfoDoList); if (result.isSuccess()) { jsonObject.put("success", true); jsonObject.put("message", "操作成功!"); ServletUtils.writeJson(jsonObject.toString()); return null; } else { jsonObject.put("success", false); jsonObject.put("message", result.getErrorMessage()); ServletUtils.writeJson(jsonObject.toString()); return null; } } /** * 获取请求参数中的借款标的信息 * * @return * @author: liuzgmf * @date: 2015年4月20日下午3:46:52 */ private List<LoanInfoDo> getLoanInfos(String jsonString) { try { ObjectMapper mapper = new ObjectMapper(); List<Map<String, Object>> params = mapper.readValue(jsonString, new TypeReference<List<HashMap<String, Object>>>() { }); List<LoanInfoDo> loanInfoDoList = new ArrayList<LoanInfoDo>(); for (Map<String, Object> map : params) { LoanInfoDo loanInfoDo = new LoanInfoDo(); loanInfoDo.setRealName((String) map.get("realName")); loanInfoDo.setSex((String) map.get("sex")); loanInfoDo.setAge((Integer) map.get("age")); loanInfoDo.setMarriaged((String) map.get("marriaged")); loanInfoDo.setResidenceType((String) map.get("residenceType")); loanInfoDo.setEducation((String) map.get("education")); loanInfoDo.setCreditNum((Integer) map.get("creditNum")); loanInfoDo.setCreditAmt((Double) map.get("creditAmt")); loanInfoDo.setIdNo((String) map.get("idNo")); loanInfoDo.setCarQty((Integer) map.get("carQty")); loanInfoDo.setCompanyName((String) map.get("companyName")); loanInfoDo.setCompanyAddress((String) map.get("companyAddress")); loanInfoDo.setPosition((String) map.get("position")); loanInfoDo.setCompanyType((String) map.get("companyType")); loanInfoDo.setWorkYear((String) map.get("workYear")); loanInfoDo.setIndustry((String) map.get("industry")); loanInfoDo.setIncome((Double) map.get("income")); loanInfoDo.setExpense((Double) map.get("expense")); loanInfoDo.setLoanAmt((Double) map.get("loanAmt")); loanInfoDo.setLoanPeriod((Integer) map.get("loanPeriod")); loanInfoDo.setProductType((String) map.get("productType")); loanInfoDo.setRepayType(Integer.parseInt((String) map.get("repayType"))); loanInfoDo.setLoanAnnualRate((Double) map.get("loanAnnualRate")); loanInfoDo.setAnnualRate((Double) map.get("annualRate")); loanInfoDo.setTenderDay((Integer) map.get("tenderDay")); loanInfoDo.setLoanUsage((String) map.get("loanUsage")); loanInfoDo.setConsultant((String) map.get("consultant")); loanInfoDo.setConsultantBranch((String) map.get("consultantBranch")); loanInfoDo.setBorrowGroup((String) map.get("borrowGroup")); loanInfoDo.setBusinessNo((String) map.get("businessNo")); loanInfoDo.setLoanStatus(LoanStatus.UNRELEASE); loanInfoDoList.add(loanInfoDo); } return loanInfoDoList; } catch (IOException e) { logger.error(e.getMessage(), e); JSONObject jsonObject = new JSONObject(); jsonObject.put("success", false); jsonObject.put("message", "请求参数非法," + e.getMessage()); ServletUtils.writeJson(jsonObject.toString()); return null; } } /** * 根据条件查询借款标的信息 * * @return * @author: liuzgmf * @date: 2015年4月20日下午3:50:36 */ public String queryLoanInfos() { Map<String, Object> searchItems = new HashMap<String, Object>(); if (loanInfoDo == null) { loanInfoDo = new LoanInfoDo(); } if (StringUtils.isNotBlank(loanInfoDo.getRealName())) { searchItems.put("realName", loanInfoDo.getRealName()); } if (StringUtils.isNotBlank(loanInfoDo.getProductType())) { searchItems.put("productType", loanInfoDo.getProductType()); } if (loanInfoDo.getLoanStatus() != null) { searchItems.put("loanStatus", loanInfoDo.getLoanStatus()); } long currentPage = (StringUtils.isNotBlank(request.getParameter("curPage")) ? Long.parseLong(request .getParameter("curPage")) : 1); long pageSize = (StringUtils.isNotBlank(request.getParameter("pageSize")) ? Long.parseLong(request .getParameter("pageSize")) : 10); long beginCount = (currentPage - 1) * pageSize; searchItems.put("beginCount", (beginCount < 0 ? 0 : beginCount)); searchItems.put("pageSize", pageSize); NPageDo<LoanInfoDo> pageDo = loanInfoService.queryLoanInfos(searchItems); pageDo.setCurrentPage(currentPage); pageDo.setPageSize(pageSize); request.setAttribute("pageDo", pageDo); return SUCCESS; } public String getByLoanInfoId() { String loanInfoId = request.getParameter("loanInfoId"); if (StringUtils.isBlank(loanInfoId)) { request.setAttribute(WebConstants.MESSAGE_KEY, "参数有误!"); return ERROR; } loanInfoDo = loanInfoService.getByLoanInfoId(Long.parseLong(loanInfoId)); return SUCCESS; } public String updateLoanInfo() { if (loanInfoDo == null || loanInfoDo.getLoanInfoId() == null) { request.setAttribute(WebConstants.MESSAGE_KEY, "参数有误!"); return ERROR; } IResult<?> result = loanInfoService.updateLoanInfo(loanInfoDo); if (result.isSuccess()) { request.setAttribute(WebConstants.MESSAGE_KEY, "操作成功!"); return SUCCESS; } else { request.setAttribute(WebConstants.MESSAGE_KEY, "参数有误!"); return ERROR; } } /** * 发布借款标的 * * @return * @author: liuzgmf * @date: 2015年4月20日下午4:15:36 */ public String releaseLoanInfo() { JSONObject json = new JSONObject(); if (loanInfoId == null || loanInfoId <= 0 || loanStatus == null || (!loanStatus.equals(LoanStatus.TOCHINAPNR) && !loanStatus.equals(LoanStatus.TODEPOSIT))) { json.put("success", false); json.put("message", "参数有误!"); ServletUtils.writeJson(json.toString()); return null; } loanInfoIdList = new ArrayList<Long>(); loanInfoIdList.add(loanInfoId); if (LoanStatus.TOCHINAPNR.equals(loanStatus)) { json = releaseToChinapnr(); } else { json = releaseToDeposit(); } ServletUtils.writeJson(json.toString()); return null; } /** * 发布借款标的定存系统 * * @return * @author: liuzgmf * @date: 2015年4月21日上午9:49:23 */ private JSONObject releaseToDeposit() { IResult<?> result = loanInfoService.addLoanDetail(loanInfoIdList); JSONObject jsonObject = new JSONObject(); if (result != null && result.isSuccess()) { jsonObject.put("success", true); jsonObject.put("message", "操作成功!"); } else { jsonObject.put("success", result.isSuccess()); jsonObject.put("message", result.getErrorMessage()); } return jsonObject; } /** * 发布借款标的资金托管系统 * * @return * @author: liuzgmf * @date: 2015年4月21日上午9:48:19 */ private JSONObject releaseToChinapnr() { List<LoanInfoDo> loanInfoDoList = loanInfoService.queryByLoanInfoIds(loanInfoIdList); List<Map<String, String>> loanInfoList = new ArrayList<Map<String, String>>(); for (LoanInfoDo loanInfoDo : loanInfoDoList) { HashMap<String, String> map = new HashMap<String, String>(); AccountUserDo userDo = userService.getByIdNo(loanInfoDo.getIdNo()); map.put("loanInfoId", loanInfoDo.getLoanInfoId().toString()); map.put("userId", userDo.getId() + ""); map.put("idNo", loanInfoDo.getIdNo()); map.put("realName", loanInfoDo.getRealName());// 客户名称 map.put("sex", loanInfoDo.getSex());// 性别 map.put("age", loanInfoDo.getAge() + "");// 年龄 map.put("maritalStatus", loanInfoDo.getMarriaged());// 婚姻状况 map.put("hasHourse", loanInfoDo.getResidenceType());// 居住状况 map.put("highestEdu", loanInfoDo.getEducation());// 学历 map.put("creditNum", loanInfoDo.getCreditNum() + "");// 信用卡总张数 map.put("creditSum", loanInfoDo.getCreditAmt() + "");// 信用卡总额度 map.put("hasCar", loanInfoDo.getCarQty() + "");// 车辆信息 map.put("orgName", loanInfoDo.getCompanyName());// 公司名称 map.put("companyAddress", loanInfoDo.getCompanyAddress());// 公司地址 map.put("job", loanInfoDo.getPosition());// 职位级别 map.put("companyType", loanInfoDo.getCompanyType());// 企业性质 map.put("workYear", loanInfoDo.getWorkYear() + "");// 现公司工作年限 map.put("companyLine", loanInfoDo.getIndustry());// 公司行业 map.put("monthlyIncome", loanInfoDo.getIncome() + "");// 月收入 map.put("monthlyOutcome", loanInfoDo.getExpense() + "");// 月支出合计 map.put("borrowAmount", df.format(loanInfoDo.getLoanAmt()));// 借款金额 map.put("deadline", loanInfoDo.getLoanPeriod() + "");// 申请期限 map.put("borrowWay", Convert.strToInt(loanInfoDo.getProductType(), 1) + "");// 产品类型1=薪金贷2=生意贷3=业主贷 map.put("paymentMode", loanInfoDo.getRepayType() + "");// 还款方式 map.put("annualRate", df.format(loanInfoDo.getAnnualRate()));// 年利率(%) map.put("raiseTerm", loanInfoDo.getTenderDay() + "");// 筹标期限(天) map.put("moneyPurposes", loanInfoDo.getLoanUsage());// 贷款资金用途 map.put("borrowadvisory", loanInfoDo.getConsultant());// 借款咨询方 map.put("advisorybranch", loanInfoDo.getConsultantBranch());// 咨询方分行 if (StringUtils.isNotBlank(loanInfoDo.getBorrowGroup())) { map.put("borrowGroup", loanInfoDo.getBorrowGroup());// 标的所属群组 } else { map.put("borrowGroup", "0");// 标的所属群组 } map.put("businessNo", loanInfoDo.getBusinessNo());// 业务编号 loanInfoList.add(map); } String ip = ((Admin) request.getSession().getAttribute(IConstants.SESSION_ADMIN)).getLastIP(); List<Map<String, String>> newLoanInfoList = new ArrayList<Map<String, String>>(); JSONObject result = new JSONObject(); List<String> ret; try { ret = borrowManageService.importDatasHHN(loanInfoList, ip, WebUtil.getWebPath(), newLoanInfoList, BorrowManageService.OPERATE_TYPE_DISPATCH); for (Map<String, String> newLoanInfo : newLoanInfoList) { LoanInfoDo loanInfoDo = new LoanInfoDo(); loanInfoDo.setLoanInfoId(Long.parseLong(newLoanInfo.get("loanInfoId"))); loanInfoDo.setLoanStatus(LoanStatus.TOCHINAPNR); loanInfoService.updateLoanInfo(loanInfoDo); } result.put("success", true); result.put("message", handleDispatchMsg(ret)); } catch (Exception e) { logger.error("发布借款异常!" + e.getMessage(), e); result.put("success", false); result.put("message", "发布借款异常!"); } return result; } private String handleDispatchMsg(List<String> list) { StringBuffer buffer = new StringBuffer(); for (String str : list) { buffer.append(str); buffer.append("\r\n"); } return buffer.toString(); } /** * @return loanInfoDo */ public LoanInfoDo getLoanInfoDo() { return loanInfoDo; } /** * @param loanInfoDo * the loanInfoDo to set */ public void setLoanInfoDo(LoanInfoDo loanInfoDo) { this.loanInfoDo = loanInfoDo; } /** * @return loanInfoId */ public Long getLoanInfoId() { return loanInfoId; } /** * @param loanInfoId * the loanInfoId to set */ public void setLoanInfoId(Long loanInfoId) { this.loanInfoId = loanInfoId; } /** * @return loanStatus */ public LoanStatus getLoanStatus() { return loanStatus; } /** * @param loanStatus * the loanStatus to set */ public void setLoanStatus(LoanStatus loanStatus) { this.loanStatus = loanStatus; } /** * @return loanInfoIdList */ public List<Long> getLoanInfoIdList() { return loanInfoIdList; } /** * @param loanInfoIdList * the loanInfoIdList to set */ public void setLoanInfoIdList(List<Long> loanInfoIdList) { this.loanInfoIdList = loanInfoIdList; } }