Browse Source

代收代付申请管理

master
fanzongzhe 1 year ago
parent
commit
9e877afcde
  1. 1
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java
  2. 1
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java
  3. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/TransferPaymentQuery.java
  4. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/TransferPaymentVo.java
  5. 58
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java
  6. 67
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java
  7. 1
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyVo.java
  8. 42
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentRecordVo.java
  9. 21
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/SubmitTransferDto.java
  10. 41
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferCompleteDto.java
  11. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferDelegateQuery.java
  12. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferGetNodeQuery.java
  13. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferGetNodeVo.java
  14. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferTaskQuery.java
  15. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  16. 9
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyMapper.java
  17. 62
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyMapper.xml
  18. 75
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java
  19. 772
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
  20. 7
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentrecord/LoanTransferPaymentRecordMapper.java
  21. 20
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentrecord/LoanTransferPaymentRecordMapper.xml
  22. 11
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentrecord/LoanTransferPaymentRecordService.java

1
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java

@ -36,6 +36,7 @@ public enum BillTypeEnum {
JCZLQRD("JCZLQRD", "交车资料确认单"),
JCECQRD("JCECQRD", "交车资料二次确认单"),
HKSQ("HKSQ", "划扣申请单据编号"),
DSDFSQ("DSDFSQ", "代收代付申请单据编号"),
FKCEQRSQ("FKCEQRSQ", "放款差额确认申请");

1
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java

@ -22,6 +22,7 @@ public enum LoanFileEnum {
OTHER_INFO("013", "欠款客户备案其他资料"),
BUCKLE_APPLY("014", "划扣申请附件"),
BEPADSINCERE("015", "逾期垫款附件"),
TRANSFERPAYMENT("016", "代收代付附件"),
;

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/TransferPaymentQuery.java

@ -22,7 +22,6 @@ public class TransferPaymentQuery implements Query {
private String accountTypeKey; //转付账户类型key
private String prepareStartDate; //预转付开始日期
private String prepareEndDate; //预转付结束日期
private String overdueState; //转付状态
@ApiModelProperty("组织全路径")
private String orgPath;
@ApiModelProperty("菜单sid")
@ -32,4 +31,5 @@ public class TransferPaymentQuery implements Query {
@ApiModelProperty("用户sid")
private String userSid;
private String type; //0待转付 1已转付
private String period;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/TransferPaymentVo.java

@ -15,6 +15,7 @@ public class TransferPaymentVo implements Vo {
private String vinNo; //车架号
private String loanContractNo; //贷款合同号
private String bankName; //资方
private String customer;
private String bankContractNo; //资方合同号
private String borrowerName; //贷款人
private String period; //期数
@ -23,6 +24,7 @@ public class TransferPaymentVo implements Vo {
private String actualDate; //实还日期
private String actualMoney; //实还金额
private String prepareDate; //预转付日期
private String transferDate; //实际付日期
private String spread; //息差
private String transferPrincipal; //转付本金
private String defaultInterest; //转付罚息

58
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java

@ -1,7 +1,7 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -29,11 +29,67 @@ import java.util.List;
fallback = LoanTransferPaymentApplyFeignFallback.class)
public interface LoanTransferPaymentApplyFeign {
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<LoanTransferPaymentApplyVo>> listPage(@RequestBody PagerQuery<LoanTransferPaymentApplyQuery> pq);
@ApiOperation("新增初始化")
@PostMapping("/paymentInit")
@ResponseBody
public ResultBean<LoanTransferPaymentApplyInit> paymentInit(@RequestBody String[] sids);
@ApiOperation("保存修改")
@PostMapping("/saveTransferPayment")
@ResponseBody
public ResultBean<String> saveTransferPayment(@RequestBody LoanTransferPaymentApplyDto dto);
@ApiOperation("详情查看")
@GetMapping("/paymentDetails")
@ResponseBody
public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(@RequestParam("sid") String sid);
@ApiOperation("批量删除")
@DeleteMapping("/deleteBySids")
@ResponseBody
public ResultBean deleteBySids(@RequestBody String[] sids);
//---------------------------流程---------------------------------------
@ApiOperation("提交")
@PostMapping("/submit")
public ResultBean submitRecordApplication(@RequestBody @Valid SubmitTransferDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody TransferCompleteDto dto);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody TransferTaskQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody TransferTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@RequestBody TransferTaskQuery query);
@ApiOperation(value = "流程历史流转记录")
@GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}")
public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<TransferGetNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap TransferGetNodeQuery query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<TransferGetNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap TransferGetNodeQuery query);
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody TransferDelegateQuery query);
}

67
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java

@ -3,6 +3,7 @@ package com.yxt.anrui.riskcenter.api.loantransferpaymentapply;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -14,8 +15,74 @@ import java.util.List;
@Component
public class LoanTransferPaymentApplyFeignFallback implements LoanTransferPaymentApplyFeign {
@Override
public ResultBean<PagerVo<LoanTransferPaymentApplyVo>> listPage(PagerQuery<LoanTransferPaymentApplyQuery> pq) {
return null;
}
@Override
public ResultBean<LoanTransferPaymentApplyInit> paymentInit(String[] sids) {
return null;
}
@Override
public ResultBean<String> saveTransferPayment(LoanTransferPaymentApplyDto dto) {
return null;
}
@Override
public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) {
return null;
}
@Override
public ResultBean deleteBySids(String[] sids) {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitTransferDto dto) {
return null;
}
@Override
public ResultBean complete(TransferCompleteDto dto) {
return null;
}
@Override
public ResultBean revokeProcess(TransferTaskQuery query) {
return null;
}
@Override
public ResultBean taskReject(TransferTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(TransferTaskQuery query) {
return null;
}
@Override
public ResultBean flowRecord(String procInsId) {
return null;
}
@Override
public ResultBean<List<TransferGetNodeVo>> getNextNodesForSubmit(TransferGetNodeQuery query) {
return null;
}
@Override
public ResultBean<List<TransferGetNodeVo>> getPreviousNodesForReject(TransferGetNodeQuery query) {
return null;
}
@Override
public ResultBean delegate(TransferDelegateQuery query) {
return null;
}
}

1
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyVo.java

@ -33,4 +33,5 @@ public class LoanTransferPaymentApplyVo implements Vo {
private String remarks; // 备注
}

42
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentRecordVo.java

@ -1,7 +1,10 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author Fan
* @description
@ -9,5 +12,44 @@ import lombok.Data;
*/
@Data
public class LoanTransferPaymentRecordVo {
private String recordSid;
private String loanContractNo;
@ApiModelProperty("资方名称")
private String bankName;
@ApiModelProperty("资方合同")
private String bankContractNo;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("借款人名称")
private String borrowerName;
@ApiModelProperty("期数")
private String period;
@ApiModelProperty("实还日期")
private String actualDate;
@ApiModelProperty("实还金额")
private String actualMoney;
@ApiModelProperty("息差")
private String spread;
@ApiModelProperty("转付本金")
private String transferPrincipal;
@ApiModelProperty("转付罚息")
private String defaultInterest;
@ApiModelProperty("转付账户类型")
private String accountType;
@ApiModelProperty("转付账户类型key")
private String accountTypeKey;
@ApiModelProperty("转付账户")
private String account;
@ApiModelProperty("转付账户账号")
private String accountNumber;
private String vinNo;
// @ApiModelProperty("还款方式")
// private String returnWay;
// @ApiModelProperty("应还日期")
// private String dueDate;
// @ApiModelProperty("应还金额")
// private String dueMoney;
// @ApiModelProperty("本期未还金额")
// private String outstandingMoney;
}

21
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/SubmitTransferDto.java

@ -0,0 +1,21 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyDto;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/27 13:38
* @Description
*/
@Data
public class SubmitTransferDto extends LoanTransferPaymentApplyDto {
private static final long serialVersionUID = 378585162071125756L;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

41
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferCompleteDto.java

@ -0,0 +1,41 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 9:01
* @Description
*/
@Data
public class TransferCompleteDto implements Dto {
private static final long serialVersionUID = 3240453987322803352L;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
private String orgSidPath;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:instanceId")
private String instanceId;
@ApiModelProperty(value = "意见")
@NotBlank(message = "参数错误:comment")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "分支字段及业务字段")
private Map<String, Object> formVariables;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 9:28
*/
@Data
public class TransferDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
// @JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferGetNodeQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 10:42
* @Description
*/
@Data
public class TransferGetNodeQuery implements Query {
private static final long serialVersionUID = -5674867230708197611L;
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "分支字段及业务字段")
private Map<String, Object> formVariables;
}

25
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferGetNodeVo.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/6/28 11:09
* @Description
*/
@Data
public class TransferGetNodeVo implements Vo {
private static final long serialVersionUID = 8802774014747063504L;
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

56
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/flow/TransferTaskQuery.java

@ -0,0 +1,56 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/6/28 17:29
* @Description 终止撤回驳回查询参数
*/
@Data
public class TransferTaskQuery implements Query {
private static final long serialVersionUID = -4006020771892400451L;
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
private String instanceId;
/*@ApiModelProperty("用户Id")
private String userId;
@ApiModelProperty("节点")
private String targetKey;
@ApiModelProperty("流程变量信息")
private Map<String, Object> values = new HashMap<>();
@ApiModelProperty("审批人")
private String assignee;
@ApiModelProperty("候选人")
private List<String> candidateUsers = new ArrayList<>();
@ApiModelProperty("审批组")
private List<String> candidateGroups = new ArrayList<>();*/
}

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

@ -835,6 +835,9 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
if (StringUtils.isNotBlank(pagerQuery.getVinNo())) {
qw.like("p.vinNo", pagerQuery.getVinNo());
}
if (StringUtils.isNotBlank(pagerQuery.getPeriod())) {
qw.eq("p.period", pagerQuery.getPeriod());
}
if (StringUtils.isNotBlank(pagerQuery.getBankName())) {
qw.like("p.bankName", pagerQuery.getBankName());
}

9
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyMapper.java

@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyVo;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApply;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyVo;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentRecordVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -17,4 +19,11 @@ import java.util.Map;
public interface LoanTransferPaymentApplyMapper extends BaseMapper<LoanTransferPaymentApply> {
LoanTransferPaymentRecordVo paymentInfo(String sid);
int selectNum(String bill);
IPage<LoanTransferPaymentApplyVo> listPage(IPage<LoanTransferPaymentApply> page,@Param(Constants.WRAPPER) QueryWrapper<LoanTransferPaymentApply> qw);
int updateFlowFiled(Map<String, Object> map);
}

62
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyMapper.xml

@ -2,4 +2,66 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loantransferpaymentapply.LoanTransferPaymentApplyMapper">
<select id="paymentInfo"
resultType="com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentRecordVo">
SELECT h.sid as recordSid,
p.loanContractNo,
p.vinNo,
p.bankContractNo,
p.bankName,
p.customer,
p.period,
p.borrowerName,
date_format(h.actualDate, '%Y-%m-%d') AS actualDate,
h.actualMoney,
r.spread,
r.transferPrincipal,
r.defaultInterest,
r.accountType,
r.accountTypeKey,
r.account,
r.accountNumber
FROM loan_repayment_history AS h
LEFT JOIN loan_repayment_plan_details AS p ON h.planDetailSid = p.sid
LEFT JOIN loan_transfer_payment_record AS r ON h.sid = r.repaymentHistorySid
where h.sid = #{sid}
</select>
<select id="selectNum" resultType="java.lang.Integer">
select IFNULL(CAST(REPLACE(MAX(billNo), #{bill}, '') AS SIGNED), 0) as code
from loan_transfer_payment_apply
where billNo LIKE concat(#{bill}, '%')
</select>
<select id="listPage"
resultType="com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyVo">
SELECT
sid,
nodeState,
useOrgName as company,
dept,
applyName,
date_format(applyDate, '%Y-%m-%d') as applyDate,
remarks,
billNo,
procDefId,
procInstId
FROM loan_transfer_payment_apply
<where>
${ew.sqlSegment}
</where>
</select>
<update id="updateFlowFiled">
UPDATE loan_transfer_payment_apply
SET nodeState=#{nodeState}
, nodeSid=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
</mapper>

75
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java

@ -6,8 +6,8 @@ import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyFeign;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyInit;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -27,8 +27,79 @@ public class LoanTransferPaymentApplyRest implements LoanTransferPaymentApplyFei
@Autowired
private LoanTransferPaymentApplyService loanTransferPaymentApplyService;
@Override
public ResultBean<PagerVo<LoanTransferPaymentApplyVo>> listPage(PagerQuery<LoanTransferPaymentApplyQuery> pq) {
ResultBean<PagerVo<LoanTransferPaymentApplyVo>> rb = ResultBean.fireFail();
PagerVo<LoanTransferPaymentApplyVo> pv = loanTransferPaymentApplyService.listPage(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<LoanTransferPaymentApplyInit> paymentInit(String[] sids) {
return loanTransferPaymentApplyService.paymentInit(sids);
}
@Override
public ResultBean<String> saveTransferPayment(LoanTransferPaymentApplyDto dto) {
return loanTransferPaymentApplyService.saveTransferPayment(dto);
}
@Override
public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) {
return loanTransferPaymentApplyService.paymentDetails(sid);
}
@Override
public ResultBean deleteBySids(String[] sids) {
return loanTransferPaymentApplyService.deleteBySids(sids);
}
@Override
public ResultBean submitRecordApplication(SubmitTransferDto dto) {
return loanTransferPaymentApplyService.submitRecordApplication(dto);
}
@Override
public ResultBean complete(TransferCompleteDto dto) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setModelId(ProcDefEnum.COLLECTIONPAYMENT.getProDefId());
return loanTransferPaymentApplyService.complete(bv);
}
@Override
public ResultBean revokeProcess(TransferTaskQuery query) {
return loanTransferPaymentApplyService.revokeProcess(query);
}
@Override
public ResultBean taskReject(TransferTaskQuery query) {
return loanTransferPaymentApplyService.taskReject(query);
}
@Override
public ResultBean breakProcess(TransferTaskQuery query) {
return loanTransferPaymentApplyService.breakProcess(query);
}
@Override
public ResultBean flowRecord(String procInsId) {
return loanTransferPaymentApplyService.flowRecord(procInsId);
}
@Override
public ResultBean<List<TransferGetNodeVo>> getNextNodesForSubmit(TransferGetNodeQuery query) {
return loanTransferPaymentApplyService.getNextNodesForSubmit(query);
}
@Override
public ResultBean<List<TransferGetNodeVo>> getPreviousNodesForReject(TransferGetNodeQuery query) {
return loanTransferPaymentApplyService.getPreviousNodesForReject(query);
}
@Override
public ResultBean delegate(TransferDelegateQuery query) {
return loanTransferPaymentApplyService.delegate(query);
}
}

772
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java

@ -25,20 +25,15 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppRecordVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApply;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyInit;
import com.yxt.anrui.riskcenter.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordService;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loantransferpaymentrecord.LoanTransferPaymentRecordService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -66,22 +61,763 @@ import java.util.stream.Collectors;
@Service
public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTransferPaymentApplyMapper, LoanTransferPaymentApply> {
@Autowired
private LoanTransferPaymentRecordService loanTransferPaymentRecordService;
@Autowired
private LoanFileService loanFileService;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private LoanRepaymentHistoryService loanRepaymentHistoryService;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private FlowFeign flowFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private MessageFeign messageFeign;
public ResultBean<LoanTransferPaymentApplyInit> paymentInit(String[] sids) {
ResultBean<LoanTransferPaymentApplyInit> rb = ResultBean.fireFail();
LoanTransferPaymentApplyInit vo = new LoanTransferPaymentApplyInit();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
vo.setApplyDate(sdf.format(new Date()));
List<LoanBuckleHistoryRecord> historyRecords = new ArrayList<>();
// for (String sid : sids) {
// LoanBuckleHistoryRecord record = new LoanBuckleHistoryRecord();
// LoanRepaymentHistoryRecordVo recordVo = loanRepaymentHistoryService.buckleInfo(sid).getData();
// if (null != recordVo) {
// BeanUtil.copyProperties(recordVo, record);
List<LoanTransferPaymentRecordVo> historyRecords = new ArrayList<>();
for (String sid : sids) {
LoanTransferPaymentRecordVo recordVo = baseMapper.paymentInfo(sid);
recordVo.setSpread("0");
recordVo.setDefaultInterest("0");
if (StringUtils.isNotBlank(recordVo.getBankContractNo())) {
LoanTransferPaymentRecord paymentRecord = loanTransferPaymentRecordService.selByBankContractNo(recordVo.getBankContractNo());
if (null != paymentRecord) {
if (StringUtils.isNotBlank(paymentRecord.getAccount())) {
recordVo.setAccount(paymentRecord.getAccount());
}
if (StringUtils.isNotBlank(paymentRecord.getAccountNumber())) {
recordVo.setAccountNumber(paymentRecord.getAccountNumber());
}
if (StringUtils.isNotBlank(paymentRecord.getAccountType())) {
recordVo.setAccountType(paymentRecord.getAccountType());
}
if (StringUtils.isNotBlank(paymentRecord.getAccountTypeKey())) {
recordVo.setAccountTypeKey(paymentRecord.getAccountTypeKey());
}
}
}
historyRecords.add(recordVo);
}
vo.setRecords(historyRecords);
return rb.success().setData(vo);
}
/**
* 生成申请单单据编号
*
* @param orgSid
* @return
*/
public String getApplyCode(String orgSid) {
//获取分公司sid
ResultBean<SysOrganizationVo> resultBean1 = sysOrganizationFeign.fetchBySid(orgSid);
String orgCode = resultBean1.getData().getOrgCode();
BillNo b = new BillNo();
b.setOrgCode(orgCode);
b.setBillType(BillTypeEnum.DSDFSQ.getBillType());
String bill = Rule.getBill(b);
int i = baseMapper.selectNum(bill);
String billNo = Rule.getBillNo(bill, i);
return billNo;
}
@Transactional(rollbackFor = Exception.class)
public ResultBean<String> saveTransferPayment(LoanTransferPaymentApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = "";
if (StringUtils.isNotBlank(dto.getSid())) {
sid = dto.getSid();
LoanTransferPaymentApply updateEntity = fetchBySid(sid);
if (null != updateEntity) {
BeanUtil.copyProperties(dto, updateEntity, "id", "sid");
baseMapper.updateById(updateEntity);
int i = loanTransferPaymentRecordService.deleteByMainSid(sid);
//删除附件表中关于该linkSid的文件
loanFileService.deleteByLinkSid(sid);
List<LoanTransferPaymentApplyFile> filess = dto.getFiles();
if (!filess.isEmpty()) {
List<String> files = new ArrayList<>();
for (LoanTransferPaymentApplyFile file : filess) {
files.add(file.getUrl());
}
loanFileService.saveAll(sid, files, LoanFileEnum.TRANSFERPAYMENT.getAttachType());
}
List<LoanTransferPaymentRecordVo> records = dto.getRecords();
if (!records.isEmpty()) {
for (LoanTransferPaymentRecordVo record : records) {
LoanTransferPaymentRecord applyRecord = new LoanTransferPaymentRecord();
BeanUtil.copyProperties(record, applyRecord, "id", "sid");
applyRecord.setMainSid(sid);
applyRecord.setRepaymentHistorySid(record.getRecordSid());
loanTransferPaymentRecordService.insert(applyRecord);
}
}
}
} else {
LoanTransferPaymentApply transferPaymentApply = new LoanTransferPaymentApply();
sid = transferPaymentApply.getSid();
BeanUtil.copyProperties(dto, transferPaymentApply, "id", "sid");
transferPaymentApply.setCreateBySid(dto.getUserSid());
transferPaymentApply.setOrgSidPath(dto.getOrgPath());
ResultBean<String> orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath());
if (orgSidByPath.getSuccess()) {
String userOrgSid = orgSidByPath.getData();
transferPaymentApply.setUseOrgSid(userOrgSid);
String billNo = getApplyCode(userOrgSid);
transferPaymentApply.setBillNo(billNo);
ResultBean<SysOrganizationVo> organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid);
if (organizationVo.getSuccess()) {
SysOrganizationVo organizationVoData = organizationVo.getData();
if (null != organizationVoData) {
transferPaymentApply.setUseOrgName(organizationVoData.getName());
}
}
}
transferPaymentApply.setNodeState("待提交");
baseMapper.insert(transferPaymentApply);
List<LoanTransferPaymentRecordVo> records = dto.getRecords();
if (!records.isEmpty()) {
for (LoanTransferPaymentRecordVo record : records) {
LoanTransferPaymentRecord applyRecord = new LoanTransferPaymentRecord();
BeanUtil.copyProperties(record, applyRecord, "id", "sid");
applyRecord.setMainSid(sid);
applyRecord.setRepaymentHistorySid(record.getRecordSid());
loanTransferPaymentRecordService.insert(applyRecord);
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(record.getRecordSid());
if (null != repaymentHistory) {
repaymentHistory.setPaymentState("转付中");
repaymentHistory.setPaymentStateKey("002");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
//删除附件表中关于该linkSid的文件
loanFileService.deleteByLinkSid(sid);
List<LoanTransferPaymentApplyFile> filess = dto.getFiles();
if (!filess.isEmpty()) {
List<String> files = new ArrayList<>();
for (LoanTransferPaymentApplyFile file : filess) {
files.add(file.getUrl());
}
loanFileService.saveAll(sid, files, LoanFileEnum.TRANSFERPAYMENT.getAttachType());
}
}
return rb.success().setData(sid);
}
public PagerVo<LoanTransferPaymentApplyVo> listPage(PagerQuery<LoanTransferPaymentApplyQuery> pq) {
IPage<LoanTransferPaymentApply> page = PagerUtil.queryToPage(pq);
LoanTransferPaymentApplyQuery pagerQuery = pq.getParams();
QueryWrapper<LoanTransferPaymentApply> qw = new QueryWrapper<>();
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(pagerQuery.getOrgPath());
privilegeQuery.setMenuSid(pagerQuery.getMenuSid());
privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl());
privilegeQuery.setUserSid(pagerQuery.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = pagerQuery.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", pagerQuery.getUserSid());
} else {
PagerVo<LoanTransferPaymentApplyVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanTransferPaymentApplyVo> p = new PagerVo<>();
return p;
}
//=======================
//分公司
if (StringUtils.isNotBlank(pagerQuery.getCompany())) {
qw.like("useOrgName", pagerQuery.getCompany());
}
//申请人
if (StringUtils.isNotBlank(pagerQuery.getApplyName())) {
qw.like("applyName", pagerQuery.getApplyName());
}
//申请编号
if (StringUtils.isNotBlank(pagerQuery.getBillNo())) {
qw.like("billNo", pagerQuery.getBillNo());
}
String applyStartTime = pagerQuery.getApplyStartDate();
String applyEndTime = pagerQuery.getApplyEndDate();
qw.apply(StringUtils.isNotEmpty(applyStartTime), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + applyStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(applyEndTime), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + applyEndTime + "','%Y-%m-%d')"
);
qw.eq("isDelete", 0);
qw.orderByDesc("createTime");
IPage<LoanTransferPaymentApplyVo> pagging = baseMapper.listPage(page, qw);
PagerVo<LoanTransferPaymentApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) {
ResultBean<LoanTransferPaymentApplyInit> rb = ResultBean.fireFail();
LoanTransferPaymentApplyInit initVo = new LoanTransferPaymentApplyInit();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
LoanTransferPaymentApply paymentApply = fetchBySid(sid);
if (null != paymentApply) {
BeanUtil.copyProperties(paymentApply, initVo);
initVo.setUserSid(paymentApply.getCreateBySid());
initVo.setOrgPath(paymentApply.getOrgSidPath());
if (StringUtils.isNotBlank(paymentApply.getProcInstId())) {
initVo.setInstanceId(paymentApply.getProcInstId());
}
if (null != paymentApply.getApplyDate()) {
initVo.setApplyDate(sdf.format(paymentApply.getApplyDate()));
}
List<LoanFile> fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.TRANSFERPAYMENT.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
List<LoanTransferPaymentApplyFile> paymentApplyFiles = new ArrayList<>();
for (String file : files) {
LoanTransferPaymentApplyFile paymentApplyFile = new LoanTransferPaymentApplyFile();
paymentApplyFile.setUrl(file);
paymentApplyFiles.add(paymentApplyFile);
}
initVo.setFiles(paymentApplyFiles);
}
List<LoanTransferPaymentRecord> records = loanTransferPaymentRecordService.selByMainSid(sid);
List<LoanTransferPaymentRecordVo> recordList = new ArrayList<>();
if (!records.isEmpty()) {
for (LoanTransferPaymentRecord record : records) {
String historySid = record.getRepaymentHistorySid();
LoanTransferPaymentRecordVo recordVo = baseMapper.paymentInfo(historySid);
recordList.add(recordVo);
}
}
initVo.setRecords(recordList);
}
return rb.success().setData(initVo);
}
public ResultBean deleteBySids(String[] sids) {
ResultBean rb = ResultBean.fireFail();
for (String sid : sids) {
LoanTransferPaymentApply paymentApply = fetchBySid(sid);
if (null != paymentApply) {
if (!paymentApply.getNodeState().equals("待提交")) {
return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败");
}
}
paymentApply.setIsDelete(1);
int i = baseMapper.updateById(paymentApply);
if (i == 0) {
return rb.setMsg("删除失败");
}
List<LoanTransferPaymentRecord> loanTransferPaymentRecords = loanTransferPaymentRecordService.selByMainSid(sid);
if (!loanTransferPaymentRecords.isEmpty()) {
for (LoanTransferPaymentRecord applyRecord : loanTransferPaymentRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
repaymentHistory.setPaymentState("待转付");
repaymentHistory.setPaymentStateKey("001");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
loanTransferPaymentRecordService.deleteByMainSid(sid);
}
return ResultBean.fireSuccess().setMsg("删除成功");
}
//-------------------------------------流程------------------------------------------------/
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitTransferDto dto, LoanTransferPaymentApply paymentApply) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (paymentApply != null) {
String businessTaskId = paymentApply.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
/**
* 更新流程相关的状态
*
* @param map
* @return
*/
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean submitRecordApplication(SubmitTransferDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanTransferPaymentApply paymentApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, paymentApply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
String businessSid = "";
//新增修改保存
ResultBean<String> resultBean = saveTransferPayment(dto);
if (resultBean.getSuccess()) {
businessSid = resultBean.getData();
}
LoanTransferPaymentApply entity = fetchBySid(businessSid);
String orgSidPath = "";
if (StringUtils.isNotBlank(entity.getOrgSidPath())) {
orgSidPath = entity.getOrgSidPath();
} else {
SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData();
if (null != data) {
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
}
}
List<String> orgPathList = Arrays.asList(orgSidPath.split("/"));
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData();
if (sysOrganization == null) {
return rb.setMsg("当前所在的组织机构不存在");
}
if (StringUtils.isBlank(sysOrganization.getManagerSid())) {
// return rb.setMsg("当前所在的组织机构未设置主管人员");
sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
}
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(entity.getSalesUserSid())) {
// if (!entity.getCreateBySid().equals(entity.getSalesUserSid())) {
// isTure = false;
// }
// historyRecords.add(record);
// }
// vo.setRecords(historyRecords);
return rb.success().setData(vo);
// variables.put("isTure", isTure);
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
// String orderNames = "<" + entity.getCustomer() + ">" + "欠款客户备案";
// variables.put("orderNames", orderNames);
LoanTransferPaymentApply paymentApply1 = fetchBySid(businessSid);
String msgBusinessSid = paymentApply1.getSid();
//用户的部门全路径sid
bv.setOrgSidPath(paymentApply1.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
// String nextNodeUserSids_ = sysOrganization.getManagerSid();
// if (isTure) {
// bv.setNextNodeUserSids(nextNodeUserSids_);
// } else {
// bv.setNextNodeUserSids(entity.getSalesUserSid());
// }
//流程定义id
bv.setModelId(ProcDefEnum.COLLECTIONPAYMENT.getProDefId());
if (r == 1) {
//流程定义id
bv.setModelId(ProcDefEnum.COLLECTIONPAYMENT.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
int i = updateFlowFiled(BeanUtil.beanToMap(ufVo));
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(msgBusinessSid);
messageFlowableQuery.setModuleName("代收代付申请");
SysUserVo userVo = sysUserFeign.fetchBySid(paymentApply1.getCreateBySid()).getData();
if (userVo != null) {
if (StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
messageFlowableQuery.setMsgTitle("代收代付申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
LoanTransferPaymentApply paymentApply2 = fetchBySid(dto.getSid());
bv.setTaskId(dto.getTaskId());
bv.setTaskDefKey(paymentApply2.getNodeSid());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
LoanTransferPaymentApply paymentApply = this.fetchBySid(businessSid);
if (bv.getTaskId().equals(paymentApply.getTaskId())) {
bv.setOrgSidPath(paymentApply.getOrgSidPath());
//流程中的参数赋值
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
// if (bv.getTaskDefKey().equals("Activity_1078xxs")) {
// if (StringUtils.isNotBlank(loanCustomerRecord.getManageSid())) {
// bv.setNextNodeUserSids(loanCustomerRecord.getManageSid());
// } else {
// bv.setNextNodeUserSids(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
// }
// }
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
List<LoanTransferPaymentRecord> loanTransferPaymentRecords = loanTransferPaymentRecordService.selByMainSid(businessSid);
if (!loanTransferPaymentRecords.isEmpty()) {
for (LoanTransferPaymentRecord applyRecord : loanTransferPaymentRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
repaymentHistory.setPaymentStateKey("003");
repaymentHistory.setPaymentState("已转付");
repaymentHistory.setTransferDate(new DateTime());
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean revokeProcess(TransferTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
LoanTransferPaymentApply paymentApply = fetchBySid(query.getBusinessSid());
String businessTaskId = paymentApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean taskReject(TransferTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
LoanTransferPaymentApply paymentApply = fetchBySid(businessSid);
if (paymentApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = paymentApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
paymentApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = paymentApply.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(paymentApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("代收代付申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextName = listResultBean.getData().get(0).getName_();
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
// if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busVehicleApply.getCreateBySid())) {
if ("发起申请".equals(nextName)) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
SysUserVo userVo = sysUserFeign.fetchBySid(paymentApply.getCreateBySid()).getData();
if (userVo != null) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
}
messageFlowableQuery.setMsgTitle("代收代付申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean breakProcess(TransferTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (org.apache.commons.lang3.StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
LoanTransferPaymentApply paymentApply = fetchBySid(query.getBusinessSid());
String businessTaskId = paymentApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(paymentApply.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
//终止任务后划扣状态改完未通过
LoanTransferPaymentApply entity = fetchBySid(query.getBusinessSid());
if (entity.getNodeState().equals("终止")) {
List<LoanTransferPaymentRecord> loanTransferPaymentRecords = loanTransferPaymentRecordService.selByMainSid(query.getBusinessSid());
if (!loanTransferPaymentRecords.isEmpty()) {
for (LoanTransferPaymentRecord applyRecord : loanTransferPaymentRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
repaymentHistory.setPaymentStateKey("001");
repaymentHistory.setPaymentState("待转付");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
}
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
//终止任务后划扣状态改完未通过
LoanTransferPaymentApply entity = fetchBySid(query.getBusinessSid());
if (entity.getNodeState().equals("终止")) {
List<LoanTransferPaymentRecord> loanTransferPaymentRecords = loanTransferPaymentRecordService.selByMainSid(query.getBusinessSid());
if (!loanTransferPaymentRecords.isEmpty()) {
for (LoanTransferPaymentRecord applyRecord : loanTransferPaymentRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
repaymentHistory.setPaymentStateKey("001");
repaymentHistory.setPaymentState("待转付");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
}
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean flowRecord(String procInsId) {
return flowTaskFeign.businessFlowRecord(procInsId);
}
public ResultBean<List<TransferGetNodeVo>> getNextNodesForSubmit(TransferGetNodeQuery query) {
ResultBean<List<TransferGetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
LoanTransferPaymentApply paymentApply = fetchBySid(query.getBusinessSid());
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
bv.setFormVariables(variables);
bv.setModelId(paymentApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<TransferGetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), TransferGetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<TransferGetNodeVo>> getPreviousNodesForReject(TransferGetNodeQuery query) {
ResultBean<List<TransferGetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
LoanTransferPaymentApply paymentApply = fetchBySid(query.getBusinessSid());
// //若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
bv.setFormVariables(variables);
bv.setModelId(paymentApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<TransferGetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), TransferGetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean delegate(TransferDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

7
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentrecord/LoanTransferPaymentRecordMapper.java

@ -3,8 +3,10 @@ package com.yxt.anrui.riskcenter.biz.loantransferpaymentrecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.DeleteMapping;
import java.util.List;
@ -13,4 +15,9 @@ import java.util.List;
public interface LoanTransferPaymentRecordMapper extends BaseMapper<LoanTransferPaymentRecord> {
int deleteByMainSid(String mainSid);
List<LoanTransferPaymentRecord> selByMainSid(String mainSid);
LoanTransferPaymentRecord selByBankContractNo(String bankContractNo);
}

20
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentrecord/LoanTransferPaymentRecordMapper.xml

@ -3,4 +3,24 @@
<mapper namespace="com.yxt.anrui.riskcenter.biz.loantransferpaymentrecord.LoanTransferPaymentRecordMapper">
<delete id="deleteByMainSid">
DELETE
FROM loan_transfer_payment_record
WHERE mainSid = #{mainSid}
</delete>
<select id="selByMainSid"
resultType="com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord">
select *
FROM loan_transfer_payment_record
WHERE mainSid = #{mainSid}
</select>
<select id="selByBankContractNo"
resultType="com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord">
SELECT r.*
FROM loan_repayment_history AS h
LEFT JOIN loan_repayment_plan_details AS p ON h.planDetailSid = p.sid
LEFT JOIN loan_transfer_payment_record AS r ON h.sid = r.repaymentHistorySid
WHERE p.bankContractNo = #{bankContractNo}
ORDER BY r.createTime DESC LIMIT 1
</select>
</mapper>

11
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentrecord/LoanTransferPaymentRecordService.java

@ -16,4 +16,15 @@ import java.util.List;
public class LoanTransferPaymentRecordService extends MybatisBaseService<LoanTransferPaymentRecordMapper, LoanTransferPaymentRecord> {
public int deleteByMainSid(String mainSid) {
return baseMapper.deleteByMainSid(mainSid);
}
public List<LoanTransferPaymentRecord> selByMainSid(String mainSid) {
return baseMapper.selByMainSid(mainSid);
}
public LoanTransferPaymentRecord selByBankContractNo(String bankContractNo) {
return baseMapper.selByBankContractNo(bankContractNo);
}
}

Loading…
Cancel
Save