Commit 17722339 authored by hezhuozhi's avatar hezhuozhi

提交还款管理

parent 1d0c99c3
...@@ -47,7 +47,7 @@ public class Repayment extends BaseEntity { ...@@ -47,7 +47,7 @@ public class Repayment extends BaseEntity {
/** /**
* 还款时间 * 还款时间
*/ */
@TableField("repayDate") @TableField("repay_date")
private LocalDate repayDate; private LocalDate repayDate;
/** /**
* 租金 * 租金
......
...@@ -111,8 +111,21 @@ ...@@ -111,8 +111,21 @@
<version>1.0</version> <version>1.0</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.hygf.biz.controller; ...@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.hygf.biz.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.hygf.api.Enum.RepaymentCronSendStateEnum;
import com.yeejoin.amos.boot.module.hygf.api.Enum.RepaymentMessageStateEnum;
import com.yeejoin.amos.boot.module.hygf.api.Enum.RepaymentRepayStateEnum;
import com.yeejoin.amos.boot.module.hygf.api.dto.RepaymentDto; import com.yeejoin.amos.boot.module.hygf.api.dto.RepaymentDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.Repayment; import com.yeejoin.amos.boot.module.hygf.api.entity.Repayment;
import com.yeejoin.amos.boot.module.hygf.api.util.FileUtil; import com.yeejoin.amos.boot.module.hygf.api.util.FileUtil;
...@@ -34,6 +37,19 @@ public class RepaymentController extends BaseController { ...@@ -34,6 +37,19 @@ public class RepaymentController extends BaseController {
RepaymentServiceImpl repaymentService; RepaymentServiceImpl repaymentService;
/** /**
* 定时任务
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/cronTest")
@ApiOperation(httpMethod = "GET", value = "定时任务", notes = "定时任务")
public ResponseModel<?> cronTest() {
repaymentService.cronSendRepayMessage();
return ResponseHelper.buildResponse(null);
}
/**
* 新增 * 新增
* *
* @return * @return
...@@ -42,6 +58,9 @@ public class RepaymentController extends BaseController { ...@@ -42,6 +58,9 @@ public class RepaymentController extends BaseController {
@PostMapping(value = "/save") @PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增") @ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<RepaymentDto> save(@RequestBody RepaymentDto model) { public ResponseModel<RepaymentDto> save(@RequestBody RepaymentDto model) {
model.setCronSendState(RepaymentCronSendStateEnum.SEND.getCode());
model.setMessageState(RepaymentMessageStateEnum.UN_CONFIRM.getCode());
model.setRepayState(RepaymentRepayStateEnum.UN_REPAY.getCode());
model = repaymentService.createWithModel(model); model = repaymentService.createWithModel(model);
return ResponseHelper.buildResponse(model); return ResponseHelper.buildResponse(model);
} }
......
...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; ...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.ExcelUtils; import com.yeejoin.amos.boot.biz.common.utils.ExcelUtils;
import com.yeejoin.amos.boot.module.hygf.api.Enum.*; import com.yeejoin.amos.boot.module.hygf.api.Enum.*;
import com.yeejoin.amos.boot.module.hygf.api.dto.RepaymentDto; import com.yeejoin.amos.boot.module.hygf.api.dto.RepaymentDto;
...@@ -17,6 +18,7 @@ import com.yeejoin.amos.boot.module.hygf.api.dto.WorkflowResultDto; ...@@ -17,6 +18,7 @@ import com.yeejoin.amos.boot.module.hygf.api.dto.WorkflowResultDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.Repayment; import com.yeejoin.amos.boot.module.hygf.api.entity.Repayment;
import com.yeejoin.amos.boot.module.hygf.api.mapper.RepaymentMapper; import com.yeejoin.amos.boot.module.hygf.api.mapper.RepaymentMapper;
import com.yeejoin.amos.boot.module.hygf.api.service.IRepaymentService; import com.yeejoin.amos.boot.module.hygf.api.service.IRepaymentService;
import com.yeejoin.amos.boot.module.hygf.biz.vo.RepaymentExcelVO;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -27,13 +29,10 @@ import org.typroject.tyboot.core.rdbms.service.BaseService; ...@@ -27,13 +29,10 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 还款实现层 * 还款实现层
...@@ -133,6 +132,7 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R ...@@ -133,6 +132,7 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R
* 定时发送还款信息 15天发送、5天发送、当天发送 * 定时发送还款信息 15天发送、5天发送、当天发送
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
// @Scheduled(cron = "0 0 1 * * ?")
public void cronSendRepayMessage() { public void cronSendRepayMessage() {
List<Repayment> repaymentList = list(); List<Repayment> repaymentList = list();
if (CollectionUtil.isNotEmpty(repaymentList)) { if (CollectionUtil.isNotEmpty(repaymentList)) {
...@@ -159,6 +159,7 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R ...@@ -159,6 +159,7 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R
} }
} }
@Transactional(rollbackFor = Exception.class)
public void importRepaymentExcel(MultipartFile file, AgencyUserModel userInfo) { public void importRepaymentExcel(MultipartFile file, AgencyUserModel userInfo) {
//获取当前用户权限的公司 //获取当前用户权限的公司
try { try {
...@@ -179,12 +180,13 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R ...@@ -179,12 +180,13 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R
if (company.getCompanyName().equals(companyName)) { if (company.getCompanyName().equals(companyName)) {
repayment.setCompanyName(companyName); repayment.setCompanyName(companyName);
repayment.setCompanyId(company.getSequenceNbr()); repayment.setCompanyId(company.getSequenceNbr());
repayment.setRegionalCompaniesCode(company.getCompanyCode()); repayment.setRegionalCompaniesCode(String.valueOf(company.getCompanyOrgCode()));
} }
} }
if (StrUtil.isEmpty(repayment.getCompanyName())) { if (StrUtil.isEmpty(repayment.getCompanyName())) {
throw new BadRequest(companyName + ",该用户没有权限"); throw new BadRequest(companyName + ",该用户没有权限");
} }
String period = (String) objects.get(1); String period = (String) objects.get(1);
String repayDate = (String) objects.get(2); String repayDate = (String) objects.get(2);
String rent = (String) objects.get(3); String rent = (String) objects.get(3);
...@@ -193,16 +195,23 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R ...@@ -193,16 +195,23 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R
String loanPeriod = (String) objects.get(6); String loanPeriod = (String) objects.get(6);
repayment.setMessageState(RepaymentMessageStateEnum.UN_CONFIRM.getCode()); repayment.setMessageState(RepaymentMessageStateEnum.UN_CONFIRM.getCode());
repayment.setCronSendState(RepaymentCronSendStateEnum.SEND.getCode()); repayment.setCronSendState(RepaymentCronSendStateEnum.SEND.getCode());
repayment.setRepayState(RepaymentRepayStateEnum.UN_REPAY.getCode());
repayment.setPeriod(period); repayment.setPeriod(period);
repayment.setRepayDate(LocalDate.parse(repayDate)); repayment.setRepayDate(DateUtils.dateParse(repayDate).toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate());
repayment.setRent(Double.valueOf(rent)); repayment.setRent(Double.valueOf(rent));
repayment.setInterest(Double.valueOf(interest)); repayment.setInterest(Double.valueOf(interest));
repayment.setPrincipal(Double.valueOf(principal)); repayment.setPrincipal(Double.valueOf(principal));
repayment.setLoanPeriod(loanPeriod); repayment.setLoanPeriod(loanPeriod);
repaymentList.add(repayment); repaymentList.add(repayment);
} }
try {
saveBatch(repaymentList); saveBatch(repaymentList);
} catch (IOException e) { } catch (Exception exception) {
throw new BadRequest("有重复数据请检查");
}
} catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
throw new BadRequest("导入失败,失败原因[" + e.getMessage() + "]"); throw new BadRequest("导入失败,失败原因[" + e.getMessage() + "]");
} }
...@@ -216,12 +225,17 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R ...@@ -216,12 +225,17 @@ public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, R
} }
List<Repayment> repaymentList = list(wrapper); List<Repayment> repaymentList = list(wrapper);
if (CollectionUtil.isNotEmpty(repaymentList)) { if (CollectionUtil.isNotEmpty(repaymentList)) {
List<RepaymentDto> dataList = new ArrayList<>(); List<RepaymentExcelVO> dataList = new ArrayList<>();
for (Repayment repayment : repaymentList) { for (Repayment repayment : repaymentList) {
RepaymentDto repaymentDto = BeanUtil.copyProperties(repayment, RepaymentDto.class); RepaymentExcelVO repaymentExcelVO = BeanUtil.copyProperties(repayment, RepaymentExcelVO.class);
dataList.add(repaymentDto); dataList.add(repaymentExcelVO);
}
try {
ExcelUtils.exportExcel(dataList, null, "还款管理", RepaymentExcelVO.class, "还款管理" + DateUtils.dateFormat(new Date(), "YYYY-MM-dd-HH-mm") + ".xlsx", response);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new BadRequest("导出失败,失败原因[" + e.getMessage() + "]");
} }
ExcelUtils.exportExcel(dataList, "", "还款管理", RepaymentDto.class, "还款管理.xlsx", response);
} }
} }
......
package com.yeejoin.amos.boot.module.hygf.api.dto; package com.yeejoin.amos.boot.module.hygf.biz.vo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
/** /**
* *
...@@ -16,28 +16,35 @@ import java.util.Date; ...@@ -16,28 +16,35 @@ import java.util.Date;
* @date 2024-09-29 * @date 2024-09-29
*/ */
@Data @Data
@ApiModel(value = "RepaymentExcelDto", description = "还款excel实体类") @ApiModel(value = "RepaymentExcelVO", description = "还款excel实体类")
public class RepaymentExcelDto implements Serializable { public class RepaymentExcelVO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "公司名称") @ApiModelProperty(value = "公司名称")
@Excel(name = "公司名称", width = 50, orderNum = "1")
private String companyName; private String companyName;
@ApiModelProperty(value = "期次") @ApiModelProperty(value = "期次")
@Excel(name = "期次", width = 30, orderNum = "2")
private String period; private String period;
@ApiModelProperty(value = "还款时间") @ApiModelProperty(value = "还款时间")
@Excel(name = "还款时间", width = 30, orderNum = "3")
private LocalDate repayDate; private LocalDate repayDate;
@ApiModelProperty(value = "租金") @ApiModelProperty(value = "租金")
@Excel(name = "租金", width = 30, orderNum = "4")
private Double rent; private Double rent;
@ApiModelProperty(value = "利息") @ApiModelProperty(value = "利息")
@Excel(name = "利息", width = 30, orderNum = "5")
private Double interest; private Double interest;
@ApiModelProperty(value = "本金") @ApiModelProperty(value = "本金")
@Excel(name = "本金", width = 30, orderNum = "6")
private Double principal; private Double principal;
@ApiModelProperty(value = "放款批次") @ApiModelProperty(value = "放款批次")
@Excel(name = "放款批次", width = 30, orderNum = "7")
private String loanPeriod; private String loanPeriod;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment