package com.sp2p.action.admin;
import java.io.IOException;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.shove.Convert;
import com.shove.data.DataException;
import com.shove.util.SqlInfusion;
import com.shove.vo.PageBean;
import com.shove.web.util.ExcelUtils;
import com.shove.web.util.JSONUtils;
import com.sp2p.action.front.BaseFrontAction;
import com.sp2p.constants.IConstants;
import com.sp2p.entity.Admin;
import com.sp2p.service.admin.AssignmentDebtService;
import com.sp2p.util.ChinaPnRInterface;
import com.sp2p.util.DateUtil;
/**
* 债权管理控制类
*
* @author xiemin
* @version [版本号, 2013-10-6]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class AssignmentDebtAction extends BaseFrontAction {
private static final long serialVersionUID = 1L;
private static Log log = LogFactory.getLog(AssignmentDebtAction.class);
private List<Map<String, Object>> borrowType;
private List<Map<String, Object>> userGroup;
/*
* 注入service
*/
private AssignmentDebtService assignmentService;
/**
* 债权列表初始化
*
* @return [参数说明]
*
* @return String [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public String queryAssignmentIndex() {
return SUCCESS;
}
/**
* 查询债权列表
*
* @return
* @throws SQLException
* @throws DataException
* [参数说明]
*
* @return String [返回类型说明]
* @throws DataException
* @throws SQLException
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
@SuppressWarnings("unchecked")
public String queryAssignmentList() throws SQLException, DataException {
String userName = SqlInfusion.FilteSqlInfusion(paramMap.get("userName"));
String id = SqlInfusion.FilteSqlInfusion(paramMap.get("id"));
String borrowWay = SqlInfusion.FilteSqlInfusion(paramMap.get("borrowWay"));
String isDebt = SqlInfusion.FilteSqlInfusion(paramMap.get("isDebt"));
String number = SqlInfusion.FilteSqlInfusion(paramMap.get("number"));
assignmentService.queryAssignmentList(pageBean, userName, id, borrowWay, isDebt,number);
int pageNum = (int) (pageBean.getPageNum() - 1) * pageBean.getPageSize();
request().setAttribute("pageNum", pageNum);
return SUCCESS;
}
/**
* 根据ID查询债权信息
*/
@SuppressWarnings("unchecked")
public String queryAssignmentById() throws DataException, SQLException {
String id = request().getParameter("id");
Map<String, String> map = null;
try {
pageBean.setPageSize(1000000);
map = assignmentService.queryAssignmentById(pageBean, id);
request().setAttribute("map", map);
} catch (DataException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return SUCCESS;
}
/**
* 债权转让
*/
public String assignment() throws SQLException, IOException, DataException {
String id = SqlInfusion.FilteSqlInfusion(paramMap.get("id"));
String auctionDays = SqlInfusion.FilteSqlInfusion(paramMap.get("auctionDays"));
String auctionBasePrice = SqlInfusion.FilteSqlInfusion(paramMap.get("auctionBasePrice"));
String details = SqlInfusion.FilteSqlInfusion(paramMap.get("details"));
String deadline = SqlInfusion.FilteSqlInfusion(paramMap.get("deadline"));
long result = -1L;
Admin admin = (Admin) session().getAttribute(IConstants.SESSION_ADMIN);
try {
result = assignmentService.assignment(id, auctionDays, auctionBasePrice, details, deadline);
if (result > 0) {
// 添加操作日志
operationLogService.addOperationLog("t_assignment_debt", admin.getUserName(), IConstants.UPDATE, admin.getLastIP(), 0, "修改债权转让状态", 2);
JSONUtils.printStr("1");
} else {
JSONUtils.printStr("2");
}
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
}
return null;
}
/**
* 查询转让中的债权列表信息初始化
*/
public String queryTransferByIdIndex() {
return SUCCESS;
}
/**
* 查询转让中的债权列表信息
*/
@SuppressWarnings("unchecked")
public String queryTransferById() throws SQLException, DataException {
String userName = SqlInfusion.FilteSqlInfusion(paramMap.get("userName"));
String publisher = SqlInfusion.FilteSqlInfusion(paramMap.get("publisher"));
assignmentService.queryTransferById(pageBean, userName, publisher);
List<Map<String, Object>> list = pageBean.getPage();
Date nowDate = new Date();
if (list != null) {
for (Map<String, Object> map : list) {
Date date = (Date) map.get("auctionEndTime");
String auctionEndTime = DateUtil.remainDateToString(nowDate, date);
map.put("auctionEndTime", auctionEndTime);
}
}
int pageNum = (int) (pageBean.getPageNum() - 1) * pageBean.getPageSize();
request().setAttribute("pageNum", pageNum);
return SUCCESS;
}
/**
* 更新转让状态--撤回
*/
public String udadateDebtStatus() throws SQLException, IOException, DataException {
String id = SqlInfusion.FilteSqlInfusion(paramMap.get("id"));
String debtStatus = SqlInfusion.FilteSqlInfusion(paramMap.get("debtStatus"));
String investId = SqlInfusion.FilteSqlInfusion(paramMap.get("investId"));
String insertName = SqlInfusion.FilteSqlInfusion(paramMap.get("insertName"));
String alienatorId = SqlInfusion.FilteSqlInfusion(paramMap.get("alienatorId"));// 转让人ID
// String auctionerId = paramMap.get("auctionerId");//认购者ID
// String auctionBasePrice = paramMap.get("auctionBasePrice"); //
// 转让金额,必须满额才转让
long result = 0;
try {
if (null == insertName && debtStatus == "3" && debtStatus.equals("3")) {
JSONUtils.printStr("3");
return null;
}
// result = assignmentService.udadateDebtStatus(id, debtStatus,
// investId,alienatorId,auctionerId,auctionBasePrice);
result = assignmentService.udadateDebtStatus(id, debtStatus, alienatorId, investId);
if (result > 0) {
JSONUtils.printStr("1");
} else {
JSONUtils.printStr("2");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 计算拆分金额
*/
public String queryDebtSumById() throws SQLException {
String id = SqlInfusion.FilteSqlInfusion(request().getParameter("id"));
double number = Double.valueOf(request().getParameter("number"));
double debtSum = 0;
Map<String, String> map = new HashMap<String, String>();
DecimalFormat formater = new DecimalFormat("#0.##");
try {
map = assignmentService.queryAssignmentById(pageBean, id);
debtSum = Double.valueOf(map.get("realAmount"));
if (debtSum > 0) {
debtSum = debtSum / number;
JSONUtils.printStr(String.valueOf((formater.format(debtSum))));
} else {
JSONUtils.printStr("2");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 根据用户输入的拆分金额计算是否超过债权总额
*/
public String queryRealAmount() {
String id = request().getParameter("id");
double realAmount = Double.valueOf(request().getParameter("realAmount"));
Map<String, String> map = new HashMap<String, String>();
try {
map = assignmentService.queryDebtSumById(id);
if (realAmount < Double.valueOf(map.get("realAmount"))) {
JSONUtils.printStr("1");
} else {
JSONUtils.printStr("2");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 拆分债权--根据份数插入批量插入新的拆分债权
*
* @return
* @throws SQLException
* [参数说明]
*
* @return String [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public String assignmentSplit() throws SQLException {
String id = SqlInfusion.FilteSqlInfusion(paramMap.get("id"));
Integer number = Integer.valueOf(paramMap.get("number"));
double realAmount = Double.valueOf(paramMap.get("realAmount"));
String split = paramMap.get("split");
long result = 0;
try {
result = assignmentService.insertAssignmentDebt(id, number, realAmount, split);
if (result > 0) {
JSONUtils.printStr("1");
} else {
JSONUtils.printStr("2");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public void setAssignmentService(AssignmentDebtService assignmentService) {
this.assignmentService = assignmentService;
}
/**
* 还款中的债权初始化
*
* @return
*/
public String queryReturnDebtIndex() {
return SUCCESS;
}
/**
* 还款中的债权
*
* @return
* @throws Exception
*/
public String queryReturnDebtList() throws Exception {
long id = Convert.strToLong(paramMap.get("id"), -1);
String number = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("number")), null);
String startTime = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("startTime")), null);
String endTime = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("endTime")), null);
String title = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("title")), null);
Integer borrowType = Convert.strToInt(SqlInfusion.FilteSqlInfusion(paramMap.get("borrowType")), -1);
String userGroup = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("userGroup")), null);
try {
assignmentService.queryReturnedDebtList(pageBean, id,number, startTime, endTime, title, borrowType, userGroup);
int pageNum = (int) (pageBean.getPageNum() - 1) * pageBean.getPageSize();
request().setAttribute("pageNum", pageNum);
request().setAttribute("totalNum", pageBean.getTotalNum());
} catch (Exception e) {
log.error(e);
e.printStackTrace();
throw e;
}
return SUCCESS;
}
// /**
// * 还款中的债权 根据ID查询详情
// *
// * @return
// * @throws Exception
// */
// public String queryRepaymentAssignmentById() throws Exception {
// long borrowId = Convert.strToLong(request("borrowId"), -1);
// if (borrowId == -1)
// return INPUT;
// try {
// assignmentService.queryRepaymentAssignmentById(pageBean, borrowId);
// int pageNum = (int) (pageBean.getPageNum() - 1) * pageBean.getPageSize();
// request().setAttribute("pageNum", pageNum);
// request().setAttribute("totalNum", pageBean.getTotalNum());
// } catch (Exception e) {
// log.error(e);
// e.printStackTrace();
// throw e;
// }
// return SUCCESS;
// }
/**
* 还款中的债权 根据ID查询详情
*
* @return
* @throws Exception
*/
public String queryRepaymentAssignmentById() throws Exception {
long borrowId = Convert.strToLong(request("invest_id"), -1);
if (borrowId == -1)
return INPUT;
try {
pageBean.setPageSize(1000000);
assignmentService.queryRepaymentAssignmentById(pageBean, borrowId);
} catch (Exception e) {
log.error(e);
e.printStackTrace();
throw e;
}
return SUCCESS;
}
/**
* 审核债权初始化
*
* @return
*/
public String queryAuditDebtInit() {
return SUCCESS;
}
/**
* 审核中的债权
*
* @return
* @throws Exception
*/
public String queryAuditDebt() throws Exception {
String userName = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("userName")), null);
String publisher = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("publisher")), null);
try {
assignmentService.queryAuditDebt(pageBean, userName, publisher, 0);
int pageNum = (int) (pageBean.getPageNum() - 1) * pageBean.getPageSize();
request().setAttribute("pageNum", pageNum);
request().setAttribute("totalNum", pageBean.getTotalNum());
} catch (Exception e) {
log.error(e);
e.printStackTrace();
throw e;
}
return SUCCESS;
}
@SuppressWarnings("unchecked")
public String showAuditDebt() throws Exception {
long id = Convert.strToLong(request("id"), 0L);
assignmentService.queryAuditDebt(pageBean, null, null, id);
Map<String, Object> map = (Map<String, Object>) pageBean.getPage().get(0);
request().setAttribute("paramMap", map);
pageBean.setPage(null);
assignmentService.queryRepaymentAssignmentList(pageBean, (Long) map.get("investId"), (Long) map.get("alienatorId"));
return SUCCESS;
}
public String auditDebt() throws Exception {
int status = Convert.strToInt(paramMap.get("status"), -1);
Long id = Convert.strToLong(paramMap.get("id"), -1);
Long investId = Convert.strToLong(paramMap.get("investId"), -1);
String remark = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("remark")), null);
String time = Convert.strToStr(SqlInfusion.FilteSqlInfusion(paramMap.get("time")), null);
try {
assignmentService.updateAuditDebt(investId, id, remark, status, time);
JSONUtils.printStr("1");
} catch (Exception e) {
e.printStackTrace();
JSONUtils.printStr("2");
}
return null;
}
/**
* 导出 还款中的债权
*
* @return
*/
@SuppressWarnings("unchecked")
public String exportReturnDebtList() {
long id = Convert.strToLong(request("id"), -1);
String number = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("number")), null);
String startTime = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("startTime")), null);
String endTime = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("endTime")), null);
String title = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("title")), null);
Integer borrowType = Convert.strToInt(request("borrowtype"), -1);
String userGroup = Convert.strToStr(request("usergroup"), null);
try {
assignmentService.queryReturnedDebtList(pageBean, id,number, startTime, endTime, title, borrowType, userGroup);
if (pageBean.getPage() == null) {
getOut().print("<script>alert(' 导出记录条数不能为空! ');window.history.go(-1);</script>");
return null;
}
if (pageBean.getPage().size() > IConstants.EXCEL_MAX) {
getOut().print("<script>alert(' 导出记录条数不能大于50000条 ');window.history.go(-1);</script>");
return null;
}
changeFigure(pageBean);
// HSSFWorkbook wb = ExcelUtils.exportExcel("还款中的债权", pageBean.getPage(), new String[] { "债权编号", "用户名", "姓名", "借款时间", "标的类型", "借款标题",
// "期数/总期数", "应还时间", "应还金额" }, new String[] { "id", "username", "realName", "passTime", "borrowWay", "borrowTitle", "repayPeriod",
// "repayDate", "stillAmount" });
HSSFWorkbook wb = ExcelUtils.exportExcel("还款中的债权", pageBean.getPage(), new String[] { "债权编号", "借款编号", "债权人", "会员号", "借款标题",
"金额 ", "利率", "期限","起息时间 ","到期时间 ","下一还款日" }, new String[] { "invest_number", "number", "investor" ,"id", "borrowTitle", "investAmount", "monthRate", "deadline",
"passTime", "endTime","nextDate" });
this.export(wb, new Date().getTime() + ".xls");
Admin admin = (Admin) session().getAttribute(IConstants.SESSION_ADMIN);
operationLogService.addOperationLog("v_t_returned_debt_list", admin.getUserName(), IConstants.EXCEL, admin.getLastIP(), 0,
"导出还款中债权记录列表", 2);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@SuppressWarnings("unchecked")
public void changeFigure(PageBean pageBean) {
List<Map<String, Object>> ll = pageBean.getPage();
if (ll != null && ll.size() > 0) {// borrowType userGroup 中文显示
for (Map<String, Object> mp : ll) {
if (mp.get("borrowType") != null) {
String typeId = mp.get("borrowType").toString();
for (Map<String, Object> cc : this.getBorrowType()) {
if (cc.get("borrowTypeId").toString().equals(typeId)) {
mp.put("borrowType", cc.get("borrowTypeValue"));
break;
}
}
}
if (mp.get("userGroup") != null) {
String resultId = mp.get("userGroup").toString();
for (Map<String, Object> cc : this.getUserGroup()) {
if (cc.get("userGroupId").toString().equals(resultId)) {
mp.put("userGroup", cc.get("userGroupValue"));
break;
}
}
}
}
}
}
public List<Map<String, Object>> getBorrowType() {
if (borrowType == null) {// 1 薪金贷 2 生意贷 3 普通借款 4 实地考察借款 5 机构担保借款 6
// 流转标
borrowType = new ArrayList<Map<String, Object>>();
Map<String, Object> mp = null;
mp = new HashMap<String, Object>();
mp.put("borrowTypeId", 0);
mp.put("borrowTypeValue", "全部");
borrowType.add(mp);
mp = new HashMap<String, Object>();
mp.put("borrowTypeId", 1);
mp.put("borrowTypeValue", "薪金贷");
borrowType.add(mp);
mp = new HashMap<String, Object>();
mp.put("borrowTypeId", 2);
mp.put("borrowTypeValue", "生意贷");
borrowType.add(mp);
mp = new HashMap<String, Object>();
mp.put("borrowTypeId", 3);
mp.put("borrowTypeValue", "普通借款");
borrowType.add(mp);
mp = new HashMap<String, Object>();
mp.put("borrowTypeId", 4);
mp.put("borrowTypeValue", "实地考察借款");
borrowType.add(mp);
mp = new HashMap<String, Object>();
mp.put("borrowTypeId", 5);
mp.put("borrowTypeValue", "机构担保借款");
borrowType.add(mp);
mp = new HashMap<String, Object>();
mp.put("borrowTypeId", 6);
mp.put("borrowTypeValue", "流转标");
borrowType.add(mp);
}
return borrowType;
}
public void setBorrowType(List<Map<String, Object>> borrowType) {
this.borrowType = borrowType;
}
public List<Map<String, Object>> getUserGroup() {
if (userGroup == null) {
userGroup = new ArrayList<Map<String, Object>>();
Map<String, Object> mp = null;
mp = new HashMap<String, Object>();
mp.put("userGroupId", 0);
mp.put("userGroupValue", "全部");
userGroup.add(mp);
mp = new HashMap<String, Object>();
mp.put("userGroupId", 1);
mp.put("userGroupValue", "用户组1");
userGroup.add(mp);
mp = new HashMap<String, Object>();
mp.put("userGroupId", 2);
mp.put("userGroupValue", "不知道什么组");
userGroup.add(mp);
mp = new HashMap<String, Object>();
mp.put("userGroupId", 3);
mp.put("userGroupValue", "西西组");
userGroup.add(mp);
}
return userGroup;
}
public void setUserGroup(List<Map<String, Object>> userGroup) {
this.userGroup = userGroup;
}
}