Browse Source

还款记录代码、经销商备案增加是否为本人网关

master
fanzongzhe 1 year ago
parent
commit
a9bd3aa298
  1. 115
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributorapply/BaseDistributorApplyService.java
  2. 3
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  3. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistory.java
  4. 30
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java
  5. 33
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java
  6. 59
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryQuery.java
  7. 36
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryUpdate.java
  8. 51
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryVo.java
  9. 18
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentExcelInfo.java
  10. 17
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/ReturnExcelInfo.java
  11. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java
  12. 28
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml
  13. 64
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java
  14. 248
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  15. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java
  16. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml
  17. 15
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java
  18. BIN
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/static/还款导入模板.xls

115
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributorapply/BaseDistributorApplyService.java

@ -691,14 +691,14 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
// boolean isDecide = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(entity.getAgree())) {
// if (entity.getAgree().equals("0")) {
// isDecide = false;
// }
// }
// variables.put("isDecide", isDecide);
boolean isTure = true;
//去查询是否同意
if (StringUtils.isNotBlank(entity.getSalesUserSid())) {
if (!entity.getCreateBySid().equals(entity.getSalesUserSid())) {
isTure = false;
}
}
variables.put("isTure", isTure);
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
@ -712,10 +712,10 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
String nextNodeUserSids_ = sysOrganization.getManagerSid();
if (StringUtils.isNotBlank(baseDistributorApply1.getManageSid())) {
bv.setNextNodeUserSids(baseDistributorApply1.getManageSid());
} else {
if (isTure) {
bv.setNextNodeUserSids(nextNodeUserSids_);
} else {
bv.setNextNodeUserSids(entity.getSalesUserSid());
}
//流程定义id
bv.setModelId(ProcDefEnum.DEALERFILINGAPPLY.getProDefId());
@ -785,14 +785,21 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
// boolean isDecide = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) {
// if (baseDistributorApply.getAgree().equals("0")) {
// isDecide = false;
// }
// }
// variables.put("isDecide", isDecide);
boolean isTure = true;
//去查询是否同意
if (StringUtils.isNotBlank(baseDistributorApply.getSalesUserSid())) {
if (!baseDistributorApply.getCreateBySid().equals(baseDistributorApply.getSalesUserSid())) {
isTure = false;
}
}
variables.put("isTure", isTure);
if (bv.getTaskDefKey().equals("Activity_000ze1d")) {
if (StringUtils.isNotBlank(baseDistributorApply.getManageSid())) {
bv.setNextNodeUserSids(baseDistributorApply.getManageSid());
} else {
bv.setNextNodeUserSids(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
}
}
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
@ -1089,14 +1096,14 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
appMap.put("sid", businessSid);
variables.put("app", appMap);
//若有网关,则赋值网关中判断的字段。
// boolean isDecide = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) {
// if (baseDistributorApply.getAgree().equals("0")) {
// isDecide = false;
// }
// }
// variables.put("isDecide", isDecide);
boolean isTure = true;
//去查询是否同意
if (StringUtils.isNotBlank(baseDistributorApply.getSalesUserSid())) {
if (!baseDistributorApply.getCreateBySid().equals(baseDistributorApply.getSalesUserSid())) {
isTure = false;
}
}
variables.put("isTure", isTure);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
@ -1211,14 +1218,14 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
BaseDistributorApply baseDistributorApply = fetchBySid(query.getBusinessSid());
// boolean isDecide = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) {
// if (baseDistributorApply.getAgree().equals("0")) {
// isDecide = false;
// }
// }
// variables.put("isDecide", isDecide);
boolean isTure = true;
//去查询是否同意
if (StringUtils.isNotBlank(baseDistributorApply.getSalesUserSid())) {
if (!baseDistributorApply.getCreateBySid().equals(baseDistributorApply.getSalesUserSid())) {
isTure = false;
}
}
variables.put("isTure", isTure);
bv.setFormVariables(variables);
bv.setModelId(baseDistributorApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
@ -1235,14 +1242,14 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
BaseDistributorApply baseDistributorApply = fetchBySid(query.getBusinessSid());
// boolean isDecide = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) {
// if (baseDistributorApply.getAgree().equals("0")) {
// isDecide = false;
// }
// }
// variables.put("isDecide", isDecide);
boolean isTure = true;
//去查询是否同意
if (StringUtils.isNotBlank(baseDistributorApply.getSalesUserSid())) {
if (!baseDistributorApply.getCreateBySid().equals(baseDistributorApply.getSalesUserSid())) {
isTure = false;
}
}
variables.put("isTure", isTure);
bv.setFormVariables(variables);
bv.setModelId(baseDistributorApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
@ -1981,14 +1988,14 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
// boolean isDecide = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(entity.getAgree())) {
// if (entity.getAgree().equals("0")) {
// isDecide = false;
// }
// }
// variables.put("isDecide", isDecide);
boolean isTure = true;
//去查询是否同意
if (StringUtils.isNotBlank(entity.getSalesUserSid())) {
if (!entity.getCreateBySid().equals(entity.getSalesUserSid())) {
isTure = false;
}
}
variables.put("isTure", isTure);
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
@ -2002,10 +2009,10 @@ public class BaseDistributorApplyService extends MybatisBaseService<BaseDistribu
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
String nextNodeUserSids_ = sysOrganization.getManagerSid();
if (StringUtils.isNotBlank(baseDistributorApply1.getManageSid())) {
bv.setNextNodeUserSids(baseDistributorApply1.getManageSid());
} else {
if (isTure) {
bv.setNextNodeUserSids(nextNodeUserSids_);
} else {
bv.setNextNodeUserSids(entity.getSalesUserSid());
}
//流程定义id
bv.setModelId(ProcDefEnum.DEALERFILINGAPPLY.getProDefId());

3
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java

@ -54,8 +54,7 @@ public enum ProcDefEnum {
LOANFINPOLICYRECORDAPPLY("金融产品政策备案", "process_u45lo7qc:1:2272516"),
LOANOTHERPOLICYRECORDAPPLY("其它融产品备案", "process_7pptyzfc:1:2272524"),
LOANCREDITAPPEALAPPLY("信用审核申诉", "process_gygvxw8k:2:5212504"),
DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:8:6070004"),
// DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:7:5300004"),
DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:9:6652504"),
LOANTEMPLATEAPPLY("定制金融方案", "process_9q5omebi:2:2685008"),
LOANHOMEVISITAPPEALAPPLY("家访考察申诉", "process_8ujil3h3:1:3665004"),
BUSVALCUSTFILING("价值客户备案申请", "process_n8fwpitk:2:5085004"),

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistory.java

@ -34,4 +34,8 @@ public class LoanRepaymentHistory extends BaseEntity {
private String buckleKey;
@ApiModelProperty("划扣状态")
private String buckle;
@ApiModelProperty("还款方式")
private String returnWay;
@ApiModelProperty("还款方式key")
private String returnWayKey;
}

30
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java

@ -1,10 +1,19 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterQuery;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
/**
@ -20,16 +29,37 @@ import org.springframework.web.bind.annotation.*;
fallback = LoanRepaymentHistoryFeignFallback.class)
public interface LoanRepaymentHistoryFeign {
@ApiOperation("当月还款记录列表")
@PostMapping("/monthListPage")
public ResultBean<PagerVo<LoanRepaymentHistoryVo>> listPage(@RequestBody PagerQuery<LoanRepaymentHistoryQuery> pq);
@ApiOperation("保存还款记录")
@PostMapping("/saveHistory")
@ResponseBody
public ResultBean<String> saveHistory(@RequestBody LoanRepaymentHistoryDto dto);
@ApiOperation("调整记录")
@PostMapping("/updateRecord")
@ResponseBody
public ResultBean<String> updateRecord(@RequestBody LoanRepaymentHistoryUpdate dto);
@ApiOperation("月还调整回显")
@GetMapping("/updateRecordInfo")
@ResponseBody
public ResultBean<LoanRepaymentHistoryUpdate> updateRecordInfo(@RequestParam("sid") String sid);
@ApiOperation("删除还款记录")
@DeleteMapping("/deleteHistory")
public ResultBean deleteHistory(@RequestParam("scheduleSid") String scheduleSid);
@ApiOperation(value = "导入")
@PostMapping("/getExcelInfo")
@ResponseBody
public ResultBean getExcelInfo(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request) throws IOException, ParseException;
@ApiOperation(value = "下载模板")
@PostMapping("/downloadExcel")
public void downloadExcel();
}

33
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java

@ -1,7 +1,14 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
/**
* @author Administrator
@ -12,13 +19,39 @@ import org.springframework.stereotype.Component;
public class LoanRepaymentHistoryFeignFallback implements LoanRepaymentHistoryFeign {
@Override
public ResultBean<PagerVo<LoanRepaymentHistoryVo>> listPage(PagerQuery<LoanRepaymentHistoryQuery> pq) {
return null;
}
@Override
public ResultBean<String> saveHistory(LoanRepaymentHistoryDto dto) {
return null;
}
@Override
public ResultBean<String> updateRecord(LoanRepaymentHistoryUpdate dto) {
return null;
}
@Override
public ResultBean<LoanRepaymentHistoryUpdate> updateRecordInfo(String sid) {
return null;
}
@Override
public ResultBean deleteHistory(String scheduleSid) {
return null;
}
@Override
public ResultBean getExcelInfo(MultipartFile file, HttpServletRequest request) throws IOException, ParseException {
return null;
}
@Override
public void downloadExcel() {
}
}

59
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryQuery.java

@ -0,0 +1,59 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/9 16:08
*/
@Data
public class LoanRepaymentHistoryQuery implements Query {
@ApiModelProperty("消贷合同编号")
private String loanContractNo;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("资方名称")
private String bankName;
@ApiModelProperty("资方合同")
private String bankContractNo;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("借款人名称")
private String borrowerName;
@ApiModelProperty("期数")
private String period;
@ApiModelProperty("还款方式")
private String returnWay;
@ApiModelProperty("还款方式key")
private String returnWayKey;
@ApiModelProperty("应还开始日期")
private String dueStartDate;
@ApiModelProperty("应还结束日期")
private String dueEndDate;
@ApiModelProperty("实还开始日期")
private String actualStartDate;
@ApiModelProperty("实还结束日期")
private String actualEndDate;
@ApiModelProperty("数据开始日期")
private String dataStartTime;
@ApiModelProperty("数据结束日期")
private String dataEndTime;
@ApiModelProperty("划扣状态")
private String buckle;
@ApiModelProperty("划扣状态key")
private String buckleKey;
@ApiModelProperty("组织全路径")
private String orgPath;
@ApiModelProperty("菜单sid")
private String menuSid;
@ApiModelProperty("菜单url")
private String menuUrl;
@ApiModelProperty("用户sid")
private String userSid;
}

36
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryUpdate.java

@ -0,0 +1,36 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author Administrator
* @description
* @date 2023/11/9 14:42
*/
@Data
public class LoanRepaymentHistoryUpdate {
private String sid;
private String loanContractNo;
private String bankName;
private String bankContractNo;
private String borrowerName;
private String vinNo;
private String period;
@ApiModelProperty("应还日期")
private String dueDate;
@ApiModelProperty("未还金额")
private String outstandingMoney;
@ApiModelProperty("应还金额")
private String dueMoney;
@ApiModelProperty("还款方式")
private String returnWay;
@ApiModelProperty("实还金额")
private String actualMoney;
@ApiModelProperty("还款方式key")
private String returnWayKey;
}

51
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryVo.java

@ -0,0 +1,51 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author Administrator
* @description
* @date 2023/11/9 16:07
*/
@Data
public class LoanRepaymentHistoryVo implements Vo {
private String sid;
@ApiModelProperty("消贷合同编号")
private String loanContractNo;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("资方合同")
private String bankContractNo;
@ApiModelProperty("资方名称")
private String bankName;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("期数")
private String period;
@ApiModelProperty("借款人名称")
private String borrowerName;
@ApiModelProperty("应还日期")
private String dueDate;
@ApiModelProperty("应还金额")
private String dueMoney;
@ApiModelProperty("实还日期")
private String actualDate;
@ApiModelProperty("数据日期")
private String dataTime;
@ApiModelProperty("实还金额")
private String actualMoney;
@ApiModelProperty("本期未还金额")
private String outstandingMoney;
@ApiModelProperty("划扣状态")
private String buckle;
@ApiModelProperty("还款方式")
private String returnWay;
}

18
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentExcelInfo.java

@ -0,0 +1,18 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/9 11:24
*/
@Data
public class RepaymentExcelInfo {
private String bankContractNo;
private String period;
private String realReturnTime;
private String realMoney;
}

17
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/ReturnExcelInfo.java

@ -0,0 +1,17 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/11/9 11:33
*/
@Data
public class ReturnExcelInfo {
private String checkInfo;
private List<RepaymentExcelInfo> infos = new ArrayList<>();
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java

@ -2,8 +2,12 @@ package com.yxt.anrui.riskcenter.biz.loanrepaymenthistory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryUpdate;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@ -16,4 +20,8 @@ public interface LoanRepaymentHistoryMapper extends BaseMapper<LoanRepaymentHist
int deleteHistory(String scheduleSid);
List<LoanRepaymentHistory> selHistoryByPlanSid(@Param("planSid") String planSid);
LoanRepaymentHistoryUpdate updateRecordInfo(String sid);
}

28
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml

@ -3,9 +3,37 @@
<mapper namespace="com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryMapper">
<select id="updateRecordInfo"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryUpdate">
SELECT p.loanContractNo as loanContractNo,
p.bankName as bankName,
p.bankContractNo as bankContractNo,
p.borrowerName as borrowerName,
p.period as period,
p.dueDate as dueDate,
p.vinNo as vinNo,
p.dueMoney as dueMoney,
h.outstandingMoney as outstandingMoney,
h.returnWay as returnWay,
h.returnWayKey as returnWayKey,
h.actualMoney as actualMoney,
h.sid as sid
FROM loan_repayment_history AS h
LEFT JOIN loan_repayment_plan_details AS p ON h.planDetailSid = p.sid
WHERE h.sid = #{sid}
</select>
<delete id="deleteHistory">
DELETE
FROM loan_repayment_history
WHERE scheduleSid = #{scheduleSid}
</delete>
<select id="selHistoryByPlanSid"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory">
select *
from loan_repayment_history
where planDetailSid = #{planSid}
and buckleKey = '004'
</select>
</mapper>

64
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java

@ -1,15 +1,25 @@
package com.yxt.anrui.riskcenter.biz.loanrepaymenthistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryDto;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryFeign;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.*;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsFeign;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.ParseException;
/**
* @description:
@ -24,13 +34,63 @@ public class LoanRepaymentHistoryRest implements LoanRepaymentHistoryFeign {
@Autowired
private LoanRepaymentHistoryService loanRepaymentHistoryService;
@Autowired
private HttpServletResponse response;
@Override
public ResultBean<PagerVo<LoanRepaymentHistoryVo>> listPage(PagerQuery<LoanRepaymentHistoryQuery> pq) {
return null;
}
@Override
public ResultBean<String> saveHistory(LoanRepaymentHistoryDto dto) {
return loanRepaymentHistoryService.saveHistory(dto);
}
@Override
public ResultBean<String> updateRecord(LoanRepaymentHistoryUpdate dto) {
return loanRepaymentHistoryService.updateRecord(dto);
}
@Override
public ResultBean<LoanRepaymentHistoryUpdate> updateRecordInfo(String sid) {
return loanRepaymentHistoryService.updateRecordInfo(sid);
}
@Override
public ResultBean deleteHistory(String scheduleSid) {
return loanRepaymentHistoryService.deleteHistory(scheduleSid);
}
@Override
public ResultBean getExcelInfo(MultipartFile file, HttpServletRequest request) throws IOException, ParseException {
return loanRepaymentHistoryService.getExcelInfo(file, request, response);
}
@Override
public void downloadExcel() {
try {
InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("static/还款导入模板.xls");
//获取要下载的模板名称
String fileName = "还款导入模板.xls";
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
// 下载文件能正常显示中文
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.setHeader("fileName", fileName);
response.setHeader("Access-Control-Expose-Headers", "filename");
OutputStream out = response.getOutputStream();
byte[] b = new byte[2048];
int len;
while ((len = resourceAsStream.read(b)) != -1) {
out.write(b, 0, len);
}
out.close();
resourceAsStream.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

248
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java

@ -1,13 +1,36 @@
package com.yxt.anrui.riskcenter.biz.loanrepaymenthistory;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryDto;
import cn.hutool.core.date.DateTime;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportReturn;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.*;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@ -18,6 +41,8 @@ import org.springframework.stereotype.Service;
@Service
public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymentHistoryMapper, LoanRepaymentHistory> {
@Autowired
private LoanRepaymentPlanDetailsService loanRepaymentPlanDetailsService;
public ResultBean<String> saveHistory(LoanRepaymentHistoryDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
@ -32,4 +57,223 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
int i = baseMapper.deleteHistory(scheduleSid);
return rb.success();
}
public List<LoanRepaymentHistory> selHistoryByPlanSid(String planSid) {
return baseMapper.selHistoryByPlanSid(planSid);
}
@Transactional(rollbackFor = Exception.class)
public ResultBean getExcelInfo(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException, ParseException {
ResultBean rb = ResultBean.fireFail();
String temp = request.getSession().getServletContext().getRealPath(File.separator) + "temp";// 临时目录
File tempFile = new File(temp);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
String fileName = file.getOriginalFilename();
if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
return rb.fail().setMsg("上传文件不正确");
}
int[] resultCell = new int[]{0, 1, 2, 3};
List<RepaymentExcelInfo> resultList = new ArrayList<>();
boolean isExcel2003 = true;
if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
isExcel2003 = false;
}
InputStream is = file.getInputStream();
Workbook wb = null;
if (isExcel2003) {
wb = new HSSFWorkbook(is);
} else {
wb = new XSSFWorkbook(is);
}
Sheet sheet = wb.getSheetAt(0);
ReturnExcelInfo importReturn = getSheetVal(sheet, resultCell);
resultList = importReturn.getInfos();
System.out.println("结果是--->" + resultList);
importReturn.setInfos(resultList);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String currentTime = simpleDateFormat.format(System.currentTimeMillis());
StringBuffer checkBankNo = new StringBuffer();
if (!resultList.isEmpty()) {
int size = resultList.size();
importReturn.setCheckInfo(currentTime + " " + "录入成功" + String.valueOf(size) + "条记录。");
//保存还款记录
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (RepaymentExcelInfo repaymentExcelInfo : resultList) {
List<LoanRepaymentPlanDetails> planDetails = loanRepaymentPlanDetailsService.selPlanByNoAndPeriod(repaymentExcelInfo.getBankContractNo(), repaymentExcelInfo.getPeriod());
if (!planDetails.isEmpty()) {
for (LoanRepaymentPlanDetails planDetail : planDetails) {
LoanRepaymentHistory repaymentHistory = new LoanRepaymentHistory();
repaymentHistory.setBuckle("未申请");
repaymentHistory.setBuckleKey("001");
repaymentHistory.setScheduleSid(planDetail.getScheduleSid());
repaymentHistory.setPlanDetailSid(planDetail.getSid());
repaymentHistory.setActualDate(sdf.parse(repaymentExcelInfo.getRealReturnTime()));
BigDecimal realMoney = new BigDecimal(repaymentExcelInfo.getRealMoney());
BigDecimal divide = realMoney.divide(new BigDecimal(planDetails.size()), 2, BigDecimal.ROUND_HALF_UP);
repaymentHistory.setActualMoney(divide);
repaymentHistory.setDataTime(new DateTime());
List<LoanRepaymentHistory> histories = baseMapper.selHistoryByPlanSid(planDetail.getSid());
BigDecimal returned = new BigDecimal(0);
if (!histories.isEmpty()) {
for (LoanRepaymentHistory history : histories) {
returned = history.getActualMoney().add(returned);
}
}
BigDecimal decimal = returned.add(divide);
BigDecimal dueMoney = planDetail.getDueMoney();
BigDecimal subtract = dueMoney.subtract(decimal);
repaymentHistory.setOutstandingMoney(subtract);
baseMapper.insert(repaymentHistory);
}
}
}
return rb.success().setData(importReturn);
} else {
String checkResult = importReturn.getCheckInfo();
return rb.fail().setMsg(checkResult);
}
}
private ReturnExcelInfo getSheetVal(Sheet sheet, int[] resultCell) {
ReturnExcelInfo importReturn = new ReturnExcelInfo();
List<RepaymentExcelInfo> importVoList = new ArrayList<>();
int[] resultIndex = new int[resultCell.length];
StringBuffer sb = new StringBuffer();
for (int r = 1; r <= sheet.getLastRowNum(); r++) {
Row row = sheet.getRow(r);
if (row == null) {
continue;
}
RepaymentExcelInfo importVo = new RepaymentExcelInfo();
for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) {
String trim = new String();
try {
trim = getCellVal(row.getCell(i)).toString().trim();
if (StringUtils.isBlank(trim)) {
NullPointerException nullPointerException = new NullPointerException();
}
String temp = getCellVal(row.getCell(i)).toString().trim();
for (int j = 0; j < resultCell.length; j++) {
if (i == resultCell[j]) {
switch (i) {
case 0:
importVo.setBankContractNo(temp);
break;
case 1:
importVo.setPeriod(temp);
break;
case 2:
importVo.setRealReturnTime(temp);
break;
case 3:
importVo.setRealMoney(temp);
break;
default:
break;
}
} else {
continue;
}
}
} catch (Exception e) {
if (StringUtils.isBlank(trim)) {
String word = new String();
switch (i) {
case 0:
word = "资方合同号";
break;
case 1:
word = "期数";
break;
case 2:
word = "实还日期";
break;
case 3:
word = "实还金额";
break;
default:
break;
}
String checkResult = "第" + (r + 1) + "行" + word + "为空";
sb.append(checkResult).append(";");
continue;
}
}
}
importVoList.add(importVo);
}
importReturn.setInfos(importVoList);
if (StringUtils.isNotBlank(sb.toString())) {
sb.delete(sb.length() - 1, sb.length());
importReturn.setCheckInfo(sb.toString());
importReturn.setInfos(new ArrayList<>());
return importReturn;
}
return importReturn;
}
public Object getCellVal(Cell cell) {
Object obj = null;
if (cell != null) {
switch (cell.getCellTypeEnum()) {
case BOOLEAN:
obj = cell.getBooleanCellValue();
break;
case ERROR:
obj = cell.getErrorCellValue();
break;
case NUMERIC:
obj = cell.getNumericCellValue();
break;
case STRING:
obj = cell.getStringCellValue();
break;
default:
break;
}
}
return obj;
}
public ResultBean<String> updateRecord(LoanRepaymentHistoryUpdate dto) {
ResultBean rb = ResultBean.fireFail();
String sid = dto.getSid();
LoanRepaymentHistory repaymentHistory = fetchBySid(sid);
if (StringUtils.isNotBlank(dto.getReturnWay())) {
repaymentHistory.setReturnWay(dto.getReturnWay());
}
if (StringUtils.isNotBlank(dto.getReturnWayKey())) {
repaymentHistory.setReturnWayKey(dto.getReturnWayKey());
}
if (StringUtils.isNotBlank(dto.getActualMoney())) {
BigDecimal realMoney = new BigDecimal(dto.getActualMoney());
repaymentHistory.setActualMoney(realMoney);
List<LoanRepaymentHistory> histories = baseMapper.selHistoryByPlanSid(repaymentHistory.getPlanDetailSid());
BigDecimal returned = new BigDecimal(0);
if (!histories.isEmpty()) {
for (LoanRepaymentHistory history : histories) {
returned = history.getActualMoney().add(returned);
}
}
LoanRepaymentPlanDetails loanRepaymentPlanDetails = loanRepaymentPlanDetailsService.fetchBySid(repaymentHistory.getPlanDetailSid());
if (null != loanRepaymentPlanDetails) {
BigDecimal decimal = returned.add(realMoney);
BigDecimal dueMoney = loanRepaymentPlanDetails.getDueMoney();
BigDecimal subtract = dueMoney.subtract(decimal);
repaymentHistory.setOutstandingMoney(subtract);
}
}
baseMapper.updateById(repaymentHistory);
return rb.success();
}
public ResultBean<LoanRepaymentHistoryUpdate> updateRecordInfo(String sid) {
ResultBean<LoanRepaymentHistoryUpdate> rb = ResultBean.fireFail();
LoanRepaymentHistoryUpdate vo = baseMapper.updateRecordInfo(sid);
return rb.success().setData(vo);
}
}

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java

@ -25,4 +25,6 @@ public interface LoanRepaymentPlanDetailsMapper extends BaseMapper<LoanRepayment
int deletePlanDetails(String scheduleSid);
List<LoanRepaymentPlanDetails> selPlanByNoAndPeriod(@Param("bankContractNo") String bankContractNo, @Param("period") String period);
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml

@ -8,4 +8,12 @@
FROM loan_repayment_plan_details
WHERE scheduleSid = #{scheduleSid}
</delete>
<select id="selPlanByNoAndPeriod"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails">
select *
from loan_repayment_plan_details
where bankContractNo = #{bankContractNo}
and `period` = #{period}
and policyOrOther = '0'
</select>
</mapper>

15
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java

@ -75,15 +75,6 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
LoanRepaymentPlanDetails entity = new LoanRepaymentPlanDetails();
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.insert(entity);
LoanRepaymentPlanDetails planDetails = fetchBySid(entity.getSid());
if (null != planDetails) {
LoanRepaymentHistoryDto loanRepaymentHistoryDto = new LoanRepaymentHistoryDto();
loanRepaymentHistoryDto.setPlanDetailSid(entity.getSid());
loanRepaymentHistoryDto.setBuckle("未申请");
loanRepaymentHistoryDto.setBuckleKey("001");
loanRepaymentHistoryDto.setScheduleSid(planDetails.getScheduleSid());
loanRepaymentHistoryService.saveHistory(loanRepaymentHistoryDto);
}
return rb.success().setData(entity.getSid());
}
@ -91,7 +82,11 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
public ResultBean deletePlanDetails(String scheduleSid) {
ResultBean rb = ResultBean.fireFail();
int i = baseMapper.deletePlanDetails(scheduleSid);
loanRepaymentHistoryService.deleteHistory(scheduleSid);
return rb.success();
}
public List<LoanRepaymentPlanDetails> selPlanByNoAndPeriod(String bankContractNo,String period) {
return baseMapper.selPlanByNoAndPeriod(bankContractNo,period);
}
}

BIN
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/static/还款导入模板.xls

Binary file not shown.
Loading…
Cancel
Save