Commit 1d0c99c3 authored by hezhuozhi's avatar hezhuozhi

提交还款管理

parent be95fc97
......@@ -19,6 +19,7 @@ public enum BusinessTypeEnum {
HYGF_YSLC("AcceptanceCheck", "验收流程"),
HYGF_BWLC("GridConnected", "并网流程"),
HYGF_SGLCSH("ProcessEngineering", "施工流程审核"),
HYGF_REPAY("Repatment", "还款"),
;
private final String code;
......
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:还款消息状态枚举
* @author: hzz
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum RepaymentCronSendStateEnum {
UN_SEND(0,"不执行定时任务"),
SEND(1,"执行定时任务");
/**
* 编码
*/
private Integer code;
/**
* 名称,描述
*/
private String remark;
}
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:还款消息状态枚举
* @author: hzz
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum RepaymentMessageStateEnum {
UN_CONFIRM(0,"待确认"),
CONFIRM(1,"确认");
/**
* 编码
*/
private Integer code;
/**
* 名称,描述
*/
private String remark;
public static RepaymentMessageStateEnum getByCode(Integer code) {
RepaymentMessageStateEnum anEnum = null;
for (RepaymentMessageStateEnum type : RepaymentMessageStateEnum.values()) {
if (type.getCode() == code) {
anEnum = type;
break;
}
}
return anEnum;
}
}
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:还款消息状态枚举
* @author: hzz
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum RepaymentRepayStateEnum {
UN_REPAY(0, "待还款"),
REPAY(1, "已还款");
/**
* 编码
*/
private Integer code;
/**
* 名称,描述
*/
private String remark;
public static RepaymentRepayStateEnum getByCode(Integer code) {
RepaymentRepayStateEnum anEnum = null;
for (RepaymentRepayStateEnum type : RepaymentRepayStateEnum.values()) {
if (type.getCode() == code) {
anEnum = type;
break;
}
}
return anEnum;
}
}
package com.yeejoin.amos.boot.module.hygf.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDate;
import java.util.Date;
/**
*
*
* @author hzz
* @date 2024-09-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "RepaymentDto", description = "还款Dto实体类")
public class RepaymentDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "公司名称")
private String companyName;
@ApiModelProperty(value = "公司CODE")
private String regionalCompaniesCode;
@ApiModelProperty(value = "公司ID")
private Long companyId;
@ApiModelProperty(value = "期次")
private String period;
@ApiModelProperty(value = "还款时间")
private LocalDate repayDate;
@ApiModelProperty(value = "租金")
private Double rent;
@ApiModelProperty(value = "利息")
private Double interest;
@ApiModelProperty(value = "本金")
private Double principal;
@ApiModelProperty(value = "放款批次")
private String loanPeriod;
@ApiModelProperty(value = "消息状态0未确认1已确认")
private Integer messageState;
@ApiModelProperty(value = "消息状态")
private String messageStateStr;
@ApiModelProperty(value = "还款状态0未还款1已还款")
private Integer repayState;
@ApiModelProperty(value = "还款状态")
private String repayStateStr;
@ApiModelProperty(value = "定时发送状态")
private Integer cronSendState;
}
package com.yeejoin.amos.boot.module.hygf.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
/**
*
*
* @author hzz
* @date 2024-09-29
*/
@Data
@ApiModel(value = "RepaymentExcelDto", description = "还款excel实体类")
public class RepaymentExcelDto implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "公司名称")
private String companyName;
@ApiModelProperty(value = "期次")
private String period;
@ApiModelProperty(value = "还款时间")
private LocalDate repayDate;
@ApiModelProperty(value = "租金")
private Double rent;
@ApiModelProperty(value = "利息")
private Double interest;
@ApiModelProperty(value = "本金")
private Double principal;
@ApiModelProperty(value = "放款批次")
private String loanPeriod;
}
package com.yeejoin.amos.boot.module.hygf.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDate;
import java.util.Date;
/**
*
*
* @author hzz
* @date 2024-09-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "hygf_repayment", autoResultMap = true)
public class Repayment extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 公司名称
*/
@TableField("company_name")
private String companyName;
/**
* 公司CODE
*/
@TableField("regional_companies_code")
private String regionalCompaniesCode;
/**
* 公司ID
*/
@TableField("company_id")
private Long companyId;
/**
* 期次
*/
@TableField("period")
private String period;
/**
* 还款时间
*/
@TableField("repayDate")
private LocalDate repayDate;
/**
* 租金
*/
@TableField("rent")
private Double rent;
/**
* 利息
*/
@TableField("interest")
private Double interest;
/**
* 本金
*/
@TableField("principal")
private Double principal;
/**
* 放款批次
*/
@TableField("loan_period")
private String loanPeriod;
/**
* 消息状态0未确认1已确认
*/
@TableField("message_state")
private Integer messageState;
/**
* 还款状态0未还款1已还款
*/
@TableField("repay_state")
private Integer repayState;
/**
* 定时发送状态
*/
@TableField("cron_send_state")
private Integer cronSendState;
}
package com.yeejoin.amos.boot.module.hygf.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.hygf.api.config.UserEmpower;
import com.yeejoin.amos.boot.module.hygf.api.dto.RepaymentDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.Repayment;
import java.util.List;
/**
* Mapper 接口
*
* @author hzz
* @date 2024-09-26
*/
public interface RepaymentMapper extends BaseMapper<Repayment> {
@UserEmpower(field = {"regional_companies_code"}, dealerField = {"regional_companies_code"}, fieldConditions = {"in"}, relationship = "and")
List<RepaymentDto> queryPage();
}
package com.yeejoin.amos.boot.module.hygf.api.service;
/**
* 接口类
*
* @author hzz
* @date 2024-09-26
*/
public interface IRepaymentService {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.hygf.api.mapper.RepaymentMapper">
<select id="queryPage" resultType="com.yeejoin.amos.boot.module.hygf.api.dto.RepaymentDto">
select * from hygf_repayment
order by rec_date DESC
</select>
</mapper>
package com.yeejoin.amos.boot.module.hygf.biz.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
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.util.FileUtil;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.RepaymentServiceImpl;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
* @author 还款管理
* @date 2024-09-26
*/
@RestController
@Api(tags = "还款管理Api")
@RequestMapping(value = "/repayment")
public class RepaymentController extends BaseController {
@Autowired
RepaymentServiceImpl repaymentService;
/**
* 新增
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<RepaymentDto> save(@RequestBody RepaymentDto model) {
model = repaymentService.createWithModel(model);
return ResponseHelper.buildResponse(model);
}
/**
* 根据sequenceNbr更新
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/updateBySequenceNbr")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<?> updateBySequenceNbr(@RequestBody Repayment model) {
repaymentService.updateById(model);
return ResponseHelper.buildResponse(null);
}
/**
* 根据sequenceNbr确认消息
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/messageBySequenceNbr")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr确认消息", notes = "根据sequenceNbr确认消息")
public ResponseModel<?> confirmMessageState(@RequestParam(value = "sequenceNbr") Long sequenceNbr) {
repaymentService.confirmMessageState(sequenceNbr);
return ResponseHelper.buildResponse(null);
}
/**
* 根据sequenceNbr还款
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/repayBySequenceNbr")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr还款", notes = "根据sequenceNbr还款")
public ResponseModel<?> batchRepay(@RequestParam(value = "sequenceNbr") Long sequenceNbr) {
repaymentService.repay(sequenceNbr);
return ResponseHelper.buildResponse(null);
}
/**
* 根据sequenceNbr批量确认消息
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/batchConfirmMessageState")
@ApiOperation(httpMethod = "POST", value = "根据sequenceNbr批量确认消息", notes = "根据sequenceNbr批量确认消息")
public ResponseModel<?> batchConfirmMessageState(@RequestBody List<Long> sequenceNbrList) {
repaymentService.batchConfirmMessageState(sequenceNbrList);
return ResponseHelper.buildResponse(null);
}
/**
* 根据sequenceNbr批量还款
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/batchRepay")
@ApiOperation(httpMethod = "POST", value = "根据sequenceNbr批量还款", notes = "根据sequenceNbr批量还款")
public ResponseModel<?> batchRepay(@RequestBody List<Long> sequenceNbrList) {
repaymentService.batchRepay(sequenceNbrList);
return ResponseHelper.buildResponse(null);
}
/**
* 根据sequenceNbr批量删除
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "batchDelete")
@ApiOperation(httpMethod = "POST", value = "根据sequenceNbr批量删除", notes = "根据sequenceNbr批量删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@RequestBody List<Long> sequenceNbrList) {
return ResponseHelper.buildResponse(repaymentService.deleteBatchSeq(sequenceNbrList));
}
/**
* 导入还款模板Excel
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "importRepaymentExcel")
@ApiOperation(httpMethod = "POST", value = "导入还款模板Excel", notes = "导入还款模板Excel")
public ResponseModel<?> importRepaymentExcel(@RequestPart("file") MultipartFile file) {
AgencyUserModel userInfo = getUserInfo();
repaymentService.importRepaymentExcel(file, userInfo);
return ResponseHelper.buildResponse(null);
}
/**
* 导入还款模板Excel
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "exportRepaymentExcel")
@ApiOperation(httpMethod = "POST", value = "导出还款模板Excel", notes = "导出还款模板Excel")
public ResponseModel<?> exportRepaymentExcel(@RequestBody List<Long> sequenceNbrList, HttpServletResponse response) {
repaymentService.exportRepaymentExcel(sequenceNbrList, response);
return ResponseHelper.buildResponse(null);
}
@GetMapping(value = "/exportTemplates")
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "模板下载", notes = "模板下载")
public void exportTemplates(HttpServletResponse response) {
FileUtil.downloadResource("还款管理导入模板.xlsx", "templates/repaymentTemplates.xlsx", response);
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/delete")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@RequestParam(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(repaymentService.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/selectDetail")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<RepaymentDto> selectOne(@RequestParam(value = "sequenceNbr") Long sequenceNbr) {
RepaymentDto repaymentDto = repaymentService.queryBySeq(sequenceNbr);
return ResponseHelper.buildResponse(repaymentDto);
}
/**
* 列表分页查询
*
* @param current 当前页
* @param current 每页大小
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
public ResponseModel<Page<RepaymentDto>> queryForPage(@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) {
return ResponseHelper.buildResponse(repaymentService.queryForRepaymentPage(current, size));
}
}
package com.yeejoin.amos.boot.module.hygf.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
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.dto.RepaymentDto;
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.mapper.RepaymentMapper;
import com.yeejoin.amos.boot.module.hygf.api.service.IRepaymentService;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 还款实现层
*
* @author hzz
* @date 2024-09-26
*/
@Service
public class RepaymentServiceImpl extends BaseService<RepaymentDto, Repayment, RepaymentMapper> implements IRepaymentService {
@Autowired
CommonServiceImpl commonService;
@Autowired
RepaymentMapper repaymentMapper;
public Page<RepaymentDto> queryForRepaymentPage(int current, int size) {
PageHelper.startPage(current, size);
List<RepaymentDto> list = repaymentMapper.queryPage();
PageInfo<RepaymentDto> pages = new PageInfo(list);
List<RepaymentDto> pagesList = pages.getList();
if (CollectionUtil.isNotEmpty(pagesList)) {
//为了前端页面展示
for (RepaymentDto repaymentDto : pagesList) {
repaymentDto.setMessageStateStr(RepaymentMessageStateEnum.getByCode(repaymentDto.getMessageState()).getRemark());
repaymentDto.setRepayStateStr(RepaymentRepayStateEnum.getByCode(repaymentDto.getMessageState()).getRemark());
}
}
Page<RepaymentDto> page = new Page<>();
page.setCurrent(current);
page.setTotal(pages.getTotal());
page.setSize(size);
page.setRecords(pages.getList());
return page;
}
@Transactional(rollbackFor = Exception.class)
public void batchConfirmMessageState(List<Long> sequenceNbrList) {
if (CollectionUtil.isNotEmpty(sequenceNbrList)) {
LambdaUpdateWrapper<Repayment> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(Repayment::getMessageState, RepaymentMessageStateEnum.CONFIRM.getCode())
.set(Repayment::getCronSendState, RepaymentCronSendStateEnum.UN_SEND.getCode())
.in(Repayment::getSequenceNbr, sequenceNbrList);
this.update(updateWrapper);
for (Long sequenceNbr : sequenceNbrList) {
//更新工作台信息
updateTaskModel(String.valueOf(sequenceNbr));
}
}
}
@Transactional(rollbackFor = Exception.class)
public void batchRepay(List<Long> sequenceNbrList) {
if (CollectionUtil.isNotEmpty(sequenceNbrList)) {
LambdaUpdateWrapper<Repayment> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(Repayment::getRepayState, RepaymentRepayStateEnum.REPAY.getCode())
.in(Repayment::getSequenceNbr, sequenceNbrList);
this.update(updateWrapper);
}
}
@Transactional(rollbackFor = Exception.class)
public void confirmMessageState(Long sequenceNbr) {
LambdaUpdateWrapper<Repayment> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(Repayment::getMessageState, RepaymentMessageStateEnum.CONFIRM.getCode())
.set(Repayment::getCronSendState, RepaymentCronSendStateEnum.UN_SEND.getCode())
.eq(Repayment::getSequenceNbr, sequenceNbr);
this.update(updateWrapper);
//更新工作台信息
updateTaskModel(String.valueOf(sequenceNbr));
}
/**
* 更新工作台信息
* @param sequenceNbr
*/
@Transactional(rollbackFor = Exception.class)
private void updateTaskModel(String sequenceNbr) {
Map<String, Object> updateTaskParam = new HashMap<>();
updateTaskParam.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
updateTaskParam.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
updateTaskParam.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
updateTaskParam.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
updateTaskParam.put("model", sequenceNbr);
updateTaskParam.put("relationId", sequenceNbr);
commonService.updateTaskModel(updateTaskParam);
}
@Transactional(rollbackFor = Exception.class)
public void repay(Long sequenceNbr) {
LambdaUpdateWrapper<Repayment> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(Repayment::getRepayState, RepaymentRepayStateEnum.REPAY.getCode())
.eq(Repayment::getSequenceNbr, sequenceNbr);
this.update(updateWrapper);
}
/**
* 定时发送还款信息 15天发送、5天发送、当天发送
*/
@Transactional(rollbackFor = Exception.class)
public void cronSendRepayMessage() {
List<Repayment> repaymentList = list();
if (CollectionUtil.isNotEmpty(repaymentList)) {
for (Repayment repayment : repaymentList) {
//此处拿出还款日期进行对比15天发送、5天发送、当天发送
LocalDate repayDate = repayment.getRepayDate();
LocalDate now = LocalDate.now();
long betweenDay = ChronoUnit.DAYS.between(now, repayDate);
Boolean dateSend = betweenDay == 15 || betweenDay == 5 || betweenDay == 0;
if (dateSend && repayment.getCronSendState() == RepaymentCronSendStateEnum.SEND.getCode()) {
//生成待办
WorkflowResultDto workflowResultDto = new WorkflowResultDto();
workflowResultDto.setInstanceId(String.valueOf(repayment.getSequenceNbr()));
commonService.buildTaskModel(commonService.buildTaskModelDto(repayment, workflowResultDto, BusinessTypeEnum.HYGF_REPAY));
}
if (repayment.getCronSendState() < 0) {
//关闭定时任务
LambdaUpdateWrapper<Repayment> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(Repayment::getCronSendState, RepaymentCronSendStateEnum.UN_SEND.getCode())
.eq(Repayment::getSequenceNbr, repayment.getSequenceNbr());
this.update(updateWrapper);
}
}
}
}
public void importRepaymentExcel(MultipartFile file, AgencyUserModel userInfo) {
//获取当前用户权限的公司
try {
List<CompanyModel> companys = userInfo.getCompanys();
if (CollectionUtil.isEmpty(companys)) {
throw new BadRequest("该用户没有公司");
}
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
List<List<Object>> read = reader.read(1);
List<Repayment> repaymentList = new ArrayList<>();
for (List<Object> objects : read) {
if (objects.size() != 7) {
throw new BadRequest("模板列不是7个");
}
Repayment repayment = new Repayment();
String companyName = (String) objects.get(0);
for (CompanyModel company : companys) {
if (company.getCompanyName().equals(companyName)) {
repayment.setCompanyName(companyName);
repayment.setCompanyId(company.getSequenceNbr());
repayment.setRegionalCompaniesCode(company.getCompanyCode());
}
}
if (StrUtil.isEmpty(repayment.getCompanyName())) {
throw new BadRequest(companyName + ",该用户没有权限");
}
String period = (String) objects.get(1);
String repayDate = (String) objects.get(2);
String rent = (String) objects.get(3);
String interest = (String) objects.get(4);
String principal = (String) objects.get(5);
String loanPeriod = (String) objects.get(6);
repayment.setMessageState(RepaymentMessageStateEnum.UN_CONFIRM.getCode());
repayment.setCronSendState(RepaymentCronSendStateEnum.SEND.getCode());
repayment.setPeriod(period);
repayment.setRepayDate(LocalDate.parse(repayDate));
repayment.setRent(Double.valueOf(rent));
repayment.setInterest(Double.valueOf(interest));
repayment.setPrincipal(Double.valueOf(principal));
repayment.setLoanPeriod(loanPeriod);
repaymentList.add(repayment);
}
saveBatch(repaymentList);
} catch (IOException e) {
log.error(e.getMessage(), e);
throw new BadRequest("导入失败,失败原因[" + e.getMessage() + "]");
}
}
public void exportRepaymentExcel(List<Long> sequenceNbrList, HttpServletResponse response) {
LambdaQueryWrapper<Repayment> wrapper = new LambdaQueryWrapper<>();
//如果是空值导出全部
if (CollectionUtil.isNotEmpty(sequenceNbrList)) {
wrapper.in(Repayment::getSequenceNbr, sequenceNbrList);
}
List<Repayment> repaymentList = list(wrapper);
if (CollectionUtil.isNotEmpty(repaymentList)) {
List<RepaymentDto> dataList = new ArrayList<>();
for (Repayment repayment : repaymentList) {
RepaymentDto repaymentDto = BeanUtil.copyProperties(repayment, RepaymentDto.class);
dataList.add(repaymentDto);
}
ExcelUtils.exportExcel(dataList, "", "还款管理", RepaymentDto.class, "还款管理.xlsx", response);
}
}
}
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