Browse Source

PC、移动端车辆远程解控申请开发完成

zhanglei
God 1 year ago
parent
commit
5a9b6be6da
  1. 1
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  2. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDetailsVo.java
  3. 6
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDto.java
  4. 38
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeign.java
  5. 41
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeignFallback.java
  6. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyVo.java
  7. 37
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyCompleteDto.java
  8. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyDelegateQuery.java
  9. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeQuery.java
  10. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeVo.java
  11. 48
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyTaskQuery.java
  12. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/SubmitLoanVehClearanceApplyDto.java
  13. 7
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehDetailsVo.java
  14. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehFile.java
  15. 20
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionapply/LoanBeCollectionApplyService.java
  16. 7
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.java
  17. 7
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.xml
  18. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehService.java
  19. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyMapper.java
  20. 25
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyMapper.xml
  21. 49
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyRest.java
  22. 410
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyService.java
  23. 72
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceApplyDetailsVo.java
  24. 99
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceVehDetailsVo.java
  25. 68
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeign.java
  26. 12
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeignFallback.java
  27. 25
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/AppVehClearanceDelegateQuery.java
  28. 34
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/CompleteVehClearanceDto.java
  29. 17
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceQuery.java
  30. 42
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceTaskQuery.java
  31. 87
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceRest.java
  32. 212
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceService.java

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

@ -68,6 +68,7 @@ public enum ProcDefEnum {
MONTHLYACCRUAL("当月应收计提申请", "process_7zpo52qj:1:7367504"),
LOANOVERDUEFIN("逾期对账申请(财务)", "process_b0i03acl:1:7672504"),
LOANOVERDUEBANK("逾期对账申请(资方)", "process_wwb7q95x:1:7672508"),
LOANVEHCLEARANCEAPPLY("车辆远程解控申请", "process_zbzenr9b:2:7782504"),
/******************************测试流程id*********************************************/

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDetailsVo.java

@ -57,6 +57,8 @@ public class LoanVehClearanceApplyDetailsVo implements Vo {
private String sid; // sid
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("申请日期")
private String createTime;
@ApiModelProperty("创建人sid")
@ -88,5 +90,5 @@ public class LoanVehClearanceApplyDetailsVo implements Vo {
@ApiModelProperty("附件")
private List<LoanVehClearanceFileVo> files = new ArrayList<>();
@ApiModelProperty("逾期车辆列表")
private List<LoanVehClearanceVehDetailsVo> loanVehClearanceVehDetailsVoList;
private List<LoanVehClearanceVehDetailsVo> loanVehClearanceVehList;
}

6
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDto.java

@ -57,6 +57,10 @@ public class LoanVehClearanceApplyDto implements Dto {
private String sid; // sid
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("创建人sid")
private String createBySid;
@ApiModelProperty("创建人")
private String createByName; // 创建人
@ApiModelProperty("申请编号")
@ -84,5 +88,5 @@ public class LoanVehClearanceApplyDto implements Dto {
@ApiModelProperty("附件")
private List<LoanVehClearanceFileVo> files = new ArrayList<>();
@ApiModelProperty("逾期车辆列表")
private List<LoanVehClearanceVehDto> loanVehClearanceVehDtoList;
private List<LoanVehClearanceVehDto> loanVehClearanceVehList;
}

38
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeign.java

@ -26,6 +26,8 @@
package com.yxt.anrui.riskcenter.api.loanvehclearanceapply;
import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApplyDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbecollectionapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarQuery;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarVo;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceVehDetailsVo;
@ -35,8 +37,12 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* Project: anrui-riskcenter(车辆远程解控申请) <br/>
* File: LoanVehClearanceApplyFeign.java <br/>
@ -87,4 +93,36 @@ public interface LoanVehClearanceApplyFeign {
@GetMapping("/fetchDetailsBySid/{sid}")
@ResponseBody
public ResultBean<LoanVehClearanceApplyDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid);
@ApiOperation("提交审批流程")
@PostMapping("/submit")
public ResultBean submit(@RequestBody @Valid SubmitLoanVehClearanceApplyDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody LoanVehClearanceApplyCompleteDto query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<LoanVehClearanceApplyNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap LoanVehClearanceApplyNodeQuery query);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<LoanVehClearanceApplyNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap LoanVehClearanceApplyNodeQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody LoanVehClearanceApplyTaskQuery query);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody LoanVehClearanceApplyTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody LoanVehClearanceApplyTaskQuery query);
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody LoanVehClearanceApplyDelegateQuery query);
}

41
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeignFallback.java

@ -25,6 +25,7 @@
*********************************************************/
package com.yxt.anrui.riskcenter.api.loanvehclearanceapply;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarQuery;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarVo;
import com.yxt.common.core.query.PagerQuery;
@ -81,4 +82,44 @@ public class LoanVehClearanceApplyFeignFallback implements LoanVehClearanceApply
ResultBean rb = ResultBean.fireFail();
return rb.setMsg("接口anrui-riskcenter/loanvehclearanceapply/fetchDetailsBySid无法访问");
}
@Override
public ResultBean submit(SubmitLoanVehClearanceApplyDto dto) {
return null;
}
@Override
public ResultBean complete(LoanVehClearanceApplyCompleteDto query) {
return null;
}
@Override
public ResultBean<List<LoanVehClearanceApplyNodeVo>> getPreviousNodesForReject(LoanVehClearanceApplyNodeQuery query) {
return null;
}
@Override
public ResultBean<List<LoanVehClearanceApplyNodeVo>> getNextNodesForSubmit(LoanVehClearanceApplyNodeQuery query) {
return null;
}
@Override
public ResultBean reject(LoanVehClearanceApplyTaskQuery query) {
return null;
}
@Override
public ResultBean revokeProcess(LoanVehClearanceApplyTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(LoanVehClearanceApplyTaskQuery query) {
return null;
}
@Override
public ResultBean delegate(LoanVehClearanceApplyDelegateQuery query) {
return null;
}
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyVo.java

@ -66,8 +66,7 @@ public class LoanVehClearanceApplyVo implements Vo {
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty("办结日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date modifyTime;
private String modifyTime;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("流程定义的id")

37
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyCompleteDto.java

@ -0,0 +1,37 @@
package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 14:57
* @Description
*/
@Data
public class LoanVehClearanceApplyCompleteDto implements Dto {
private static final long serialVersionUID = 6378752532534735663L;
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id(PC)")
private String instanceId;
@ApiModelProperty(value = "流程id(移动)")
private String procInsId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
private String orgPath;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 9:28
*/
@Data
public class LoanVehClearanceApplyDelegateQuery {
@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;
}

25
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeQuery.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:04
* @Description
*/
@Data
public class LoanVehClearanceApplyNodeQuery implements Query {
private static final long serialVersionUID = 9117613683840483366L;
@ApiModelProperty(value = "环节定义id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
private Integer next;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeVo.java

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

48
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyTaskQuery.java

@ -0,0 +1,48 @@
package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:06
* @Description
*/
@Data
public class LoanVehClearanceApplyTaskQuery implements Query {
private static final long serialVersionUID = 1288615499873178778L;
/**
* 终止驳回撤回
*/
@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(PC)")
private String instanceId;
@ApiModelProperty("流程实例Id(移动)")
private String procInsId;
}

25
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/SubmitLoanVehClearanceApplyDto.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable;
import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApplyDto;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceApplyDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liuguohui
* @version 1.0
* @description
* @date 2022/04/13
*/
@ApiModel("提交")
@Data
public class SubmitLoanVehClearanceApplyDto extends LoanVehClearanceApplyDto {
@ApiModelProperty("意见")
private String comment;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

7
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehDetailsVo.java

@ -26,6 +26,7 @@
package com.yxt.anrui.riskcenter.api.loanvehclearanceveh;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.anrui.riskcenter.api.loanbecollectionveh.LoanBeCollectionVehFile;
import com.yxt.common.core.vo.Vo;
@ -33,6 +34,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
@ -68,8 +70,9 @@ public class LoanVehClearanceVehDetailsVo implements Vo {
private String customerName; // 客户姓名
@ApiModelProperty("贷款人姓名")
private String borrowerName; // 贷款人姓名
@ApiModelProperty("首次逾期日期")
private String firstBeDate; // 首次逾期日期
@ApiModelProperty("首次逾期日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date firstBeDate;
@ApiModelProperty("逾期期数")
private String beOverduePeriod; // 逾期期数
@ApiModelProperty("逾期金额")

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehFile.java

@ -30,6 +30,8 @@ import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.List;
/**
* Project: anrui-riskcenter(催收措施申请) <br/>
* File: LoanBeCollectionVehVo.java <br/>
@ -49,4 +51,5 @@ public class LoanVehClearanceVehFile implements Vo {
private String name;
private String sid;
private List<String> files;
}

20
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionapply/LoanBeCollectionApplyService.java

@ -367,6 +367,16 @@ public class LoanBeCollectionApplyService extends MybatisBaseService<LoanBeColle
vo.setFiles(loanBeCollectionFileVos);
List<LoanBeCollectionVehDetailsVo> loanBeCollectionVehDetailsVos = loanBeCollectionVehService.selByMainSid(sid);
for (LoanBeCollectionVehDetailsVo loanBeCollectionVehDetailsVo : loanBeCollectionVehDetailsVos) {
String lockCarState = loanBeCollectionVehDetailsVo.getLockCarState();
if ("0".equals(lockCarState)){
loanBeCollectionVehDetailsVo.setLockCarState("待控制");
}else if ("1".equals(lockCarState)){
loanBeCollectionVehDetailsVo.setLockCarState("控制成功");
}else if ("2".equals(lockCarState)){
loanBeCollectionVehDetailsVo.setLockCarState("控制失败");
}else if ("3".equals(lockCarState)){
loanBeCollectionVehDetailsVo.setLockCarState("已解控");
}
List<LoanFile> loanFiles1 = loanFileService.selectByLinkSid(loanBeCollectionVehDetailsVo.getSid(), LoanFileEnum.BECOLLECTIONVEHHKXY.getAttachType());
List<LoanBeCollectionFileVo> loanBeCollectionFileVos1 = new ArrayList<>();
if (loanFiles1 != null && loanFiles1.size() > 0) {
@ -500,6 +510,16 @@ public class LoanBeCollectionApplyService extends MybatisBaseService<LoanBeColle
public ResultBean submit(SubmitLoanBeCollectionApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
List<String> collMeasures = dto.getCollMeasures();
List<LoanBeCollectionVehDto> loanBeCollectionVehDetails = dto.getLoanBeCollectionVehDetails();
if (collMeasures.contains("远程控制")){
for (LoanBeCollectionVehDto loanBeCollectionVehDetail : loanBeCollectionVehDetails) {
int i = loanBeCollectionVehService.selKzStateBySaleVehSid(loanBeCollectionVehDetail.getSaleVehSid());
if (i > 0){
return rb.setMsg("车架号" + loanBeCollectionVehDetail.getVinNo() + "已存在审批中(待控制/控制成功),不可再次勾选远程控制措施。");
}
}
}
LoanBeCollectionApply loanBeCollectionApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, loanBeCollectionApply);
if (r == 3) {

7
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.java

@ -68,8 +68,13 @@ public interface LoanBeCollectionVehMapper extends BaseMapper<LoanBeCollectionVe
@Select("select *,customerName as custName,customerPhone as custPhone from loan_be_collection_veh where mainSid = #{sid}")
List<LoanBeCollectionVehDetailsVo> selByMainSid(String sid);
@Update("update loan_be_collection_veh set lockCarState = '待控制' where mainSid = #{businessSid}")
@Update("update loan_be_collection_veh set lockCarState = '0' where mainSid = #{businessSid}")
void updateByMainSid(String businessSid);
int selBjBySaleVehSid(String saleVehSid);
int selKzStateBySaleVehSid(String saleVehSid);
@Select("select sid from loan_be_collection_veh where saleVehSid = #{saleVehSid} and lockCarState = #{c}")
String selSidBySaleVehSidAndLockState(@Param("saleVehSid") String saleVehSid,@Param("c") String c);
}

7
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.xml

@ -26,4 +26,11 @@
AND la.`nodeState` = '已办结'
AND la.`collMeasure` LIKE CONCAT('%远程控制%')
</select>
<select id="selKzStateBySaleVehSid" resultType="int">
SELECT COUNT(*)
FROM loan_be_collection_veh lv
WHERE lv.`saleVehSid` = #{saleVehSid}
AND (lv.lockCarState = '' OR lv.lockCarState IS NULL OR lv.lockCarState = '0' OR lv.lockCarState = '1')
</select>
</mapper>

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehService.java

@ -258,4 +258,12 @@ public class LoanBeCollectionVehService extends MybatisBaseService<LoanBeCollect
public int selBjBySaleVehSid(String saleVehSid) {
return baseMapper.selBjBySaleVehSid(saleVehSid);
}
public int selKzStateBySaleVehSid(String saleVehSid) {
return baseMapper.selKzStateBySaleVehSid(saleVehSid);
}
public String selSidBySaleVehSidAndLockState(String saleVehSid, String c) {
return baseMapper.selSidBySaleVehSidAndLockState(saleVehSid,c);
}
}

3
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyMapper.java

@ -39,6 +39,7 @@ import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceApply;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceApplyVo;
import java.util.List;
import java.util.Map;
/**
* Project: anrui-riskcenter(车辆远程解控申请) <br/>
@ -71,4 +72,6 @@ public interface LoanVehClearanceApplyMapper extends BaseMapper<LoanVehClearance
IPage<LoanVehClearanceLockCarVo> lockCarList(IPage<LoanVehClearanceApply> page, @Param(Constants.WRAPPER) QueryWrapper<LoanVehClearanceApply> qw);
LoanVehClearanceVehInit initVehListBySaleVehSid(String saleVehSid);
int updateFlowFiled(Map<String, Object> map);
}

25
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyMapper.xml

@ -82,7 +82,8 @@
lr.createTime,
lrpd.borrowerSid,
lrpd.salesOrderSid,
lv.lockCarMoney
lv.lockCarMoney,
lv.lockCarState
FROM
`loan_repayment_plan_details` lrpd
LEFT JOIN `loan_repayment_history` lrh
@ -100,14 +101,34 @@
ON lrpd.busVinSid = lr.saleVehSid
LEFT JOIN anrui_crm.`crm_customer_temp` ct
ON lrpd.customerSid = ct.sid
LEFT JOIN loan_be_collection_veh lv
LEFT JOIN (SELECT
*
FROM
loan_be_collection_veh
WHERE lockCarState = '1') lv
ON lrpd.busVinSid = lv.saleVehSid
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE()
GROUP BY lrpd.`sid`
HAVING (yq_total > 0)) a1
WHERE a1.busVinSid = #{saleVehSid}
AND a1.lockCarState = '1'
GROUP BY a1.loanContractNo,
a1.vinNo,
a1.busVinSid
</select>
<update id="updateFlowFiled">
UPDATE loan_veh_clearance_apply
SET nodeState=#{nodeState}, nodeSid=#{taskDefKey}, modifyTime = NOW()
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstSid=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid=#{sid}
</update>
</mapper>

49
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyRest.java

@ -25,7 +25,11 @@
*********************************************************/
package com.yxt.anrui.riskcenter.biz.loanvehclearanceapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.*;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarQuery;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarVo;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceVehDetailsVo;
@ -37,6 +41,8 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Project: anrui-riskcenter(车辆远程解控申请) <br/>
* File: LoanVehClearanceApplyFeignFallback.java <br/>
@ -108,4 +114,47 @@ public class LoanVehClearanceApplyRest implements LoanVehClearanceApplyFeign {
return rb.success().setData(vo);
}
@Override
public ResultBean submit(SubmitLoanVehClearanceApplyDto dto) {
return loanVehClearanceApplyService.submit(dto);
}
@Override
public ResultBean complete(LoanVehClearanceApplyCompleteDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.LOANVEHCLEARANCEAPPLY.getProDefId());
return loanVehClearanceApplyService.complete(bv);
}
@Override
public ResultBean<List<LoanVehClearanceApplyNodeVo>> getPreviousNodesForReject(LoanVehClearanceApplyNodeQuery query) {
return loanVehClearanceApplyService.getPreviousNodesForReject(query);
}
@Override
public ResultBean<List<LoanVehClearanceApplyNodeVo>> getNextNodesForSubmit(LoanVehClearanceApplyNodeQuery query) {
return loanVehClearanceApplyService.getNextNodesForSubmit(query);
}
@Override
public ResultBean reject(LoanVehClearanceApplyTaskQuery query) {
return loanVehClearanceApplyService.reject(query);
}
@Override
public ResultBean revokeProcess(LoanVehClearanceApplyTaskQuery query) {
return loanVehClearanceApplyService.revokeProcess(query);
}
@Override
public ResultBean breakProcess(LoanVehClearanceApplyTaskQuery query) {
return loanVehClearanceApplyService.breakProcess(query);
}
@Override
public ResultBean delegate(LoanVehClearanceApplyDelegateQuery query) {
return loanVehClearanceApplyService.delegate(query);
}
}

410
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyService.java

@ -26,7 +26,9 @@
package com.yxt.anrui.riskcenter.biz.loanvehclearanceapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.common.utils.Rule;
@ -36,26 +38,41 @@ import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoice;
import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoiceFeign;
import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
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.loanbecollectionapply.LoanBeCollectionApplyDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbecollectionrecord.LoanBeCollectionRecordVehInit;
import com.yxt.anrui.riskcenter.api.loanbecollectionveh.LoanBeCollectionVehDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbecollectionveh.LoanBeCollectionVehFile;
import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApply;
import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionFileVo;
import com.yxt.anrui.riskcenter.api.loanbecollectionapply.flowable.LoanBeCollectionApplyNodeVo;
import com.yxt.anrui.riskcenter.api.loanbecollectionapply.flowable.SubmitLoanBeCollectionApplyDto;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.*;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.*;
import com.yxt.anrui.riskcenter.biz.loanbecollectionveh.LoanBeCollectionVehService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanhomevisitinvestigate.LoanHomevisitInvestigateService;
import com.yxt.anrui.riskcenter.biz.loansolutions.LoanSolutionsService;
import com.yxt.anrui.riskcenter.biz.loanvehclearanceveh.LoanVehClearanceVehService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -67,9 +84,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* Project: anrui-riskcenter(车辆远程解控申请) <br/>
@ -109,6 +126,16 @@ public class LoanVehClearanceApplyService extends MybatisBaseService<LoanVehClea
private LoanHomevisitInvestigateService loanHomevisitInvestigateService;
@Autowired
SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowFeign flowFeign;
@Autowired
private LoanBeCollectionVehService loanBeCollectionVehService;
public PagerVo<LoanVehClearanceApplyVo> listPageVo(PagerQuery<LoanVehClearanceApplyQuery> pq) {
LoanVehClearanceApplyQuery query = pq.getParams();
@ -171,6 +198,14 @@ public class LoanVehClearanceApplyService extends MybatisBaseService<LoanVehClea
qw.orderByDesc("createTime");
IPage<LoanVehClearanceApply> page = PagerUtil.queryToPage(pq);
IPage<LoanVehClearanceApplyVo> pagging = baseMapper.selectPageVo(page, qw);
for (LoanVehClearanceApplyVo record : pagging.getRecords()) {
if ("终止".equals(record.getNodeState()) || "已办结".equals(record.getNodeState())) {
DateTime modifyTime = DateUtil.parse(record.getModifyTime());
record.setModifyTime(DateUtil.formatDate(modifyTime));
} else {
record.setModifyTime("");
}
}
PagerVo<LoanVehClearanceApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
@ -179,7 +214,7 @@ public class LoanVehClearanceApplyService extends MybatisBaseService<LoanVehClea
LoanVehClearanceLockCarQuery query = pq.getParams();
QueryWrapper<LoanVehClearanceApply> qw = new QueryWrapper<>();
qw.eq("la.useOrgSid", query.getUseOrgSid());
qw.eq("lv.lockCarState","1");
qw.eq("lv.lockCarState", "1");
if (StringUtils.isNotBlank(query.getCustName())) {
qw.like("lv.customerName", query.getCustName());
}
@ -201,7 +236,7 @@ public class LoanVehClearanceApplyService extends MybatisBaseService<LoanVehClea
public String saveOrUpdateDto(LoanVehClearanceApplyDto dto) {
String dtoSid = dto.getSid();
List<LoanVehClearanceVehDto> loanVehClearanceVehDtoList = dto.getLoanVehClearanceVehDtoList();
List<LoanVehClearanceVehDto> loanVehClearanceVehDtoList = dto.getLoanVehClearanceVehList();
List<LoanVehClearanceFileVo> files = dto.getFiles();
if (StringUtils.isBlank(dtoSid)) {
//生成单据编号
@ -301,17 +336,27 @@ public class LoanVehClearanceApplyService extends MybatisBaseService<LoanVehClea
List<LoanVehClearanceVehFile> loanVehClearanceVehFiles = new ArrayList<>();
BusSalesOrderVehicle busSalesOrderVehicle1 = busSalesOrderVehicleFeign.details(loanVehClearanceVehDetailsVo.getSaleVehSid()).getData();
BusSalesOrder busSalesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle1.getSalesOrderSid()).getData();
//催收记录sid
//担保人sid
LoanVehClearanceVehFile loanVehClearanceVehFile1 = new LoanVehClearanceVehFile();
loanVehClearanceVehFile1.setName("催收记录");
loanVehClearanceVehFile1.setName("担保人");
loanVehClearanceVehFile1.setSid(loanVehClearanceVehDetailsVo.getSaleVehSid());
loanVehClearanceVehFiles.add(loanVehClearanceVehFile1);
//开票管理sid
FinVehicleInvoice finVehicleInvoice = finVehicleInvoiceFeign.selectByVinAndContractNo(busSalesOrderVehicle1.getLinkSid(), busSalesOrder.getContractNo()).getData();
LoanVehClearanceVehFile loanVehClearanceVehFile2 = new LoanVehClearanceVehFile();
loanVehClearanceVehFile2.setName("开票信息");
loanVehClearanceVehFile2.setSid(finVehicleInvoice.getSid());
loanVehClearanceVehFiles.add(loanVehClearanceVehFile2);
//还款协议file
LoanVehClearanceVehFile LoanVehClearanceVehFile2 = new LoanVehClearanceVehFile();
String beCollectionVehSid = loanBeCollectionVehService.selSidBySaleVehSidAndLockState(loanVehClearanceVehDetailsVo.getSaleVehSid(), "1");
List<LoanFile> hkxyFiles = loanFileService.selectByLinkSid(beCollectionVehSid, LoanFileEnum.BECOLLECTIONVEHHKXY.getAttachType());
List<String> files = new ArrayList<>();
if (hkxyFiles != null && hkxyFiles.size() > 0) {
for (LoanFile hkxyFile : hkxyFiles) {
String filePath = hkxyFile.getFilePath();
String urlPrefix = fileUploadComponent.getUrlPrefix();
filePath = urlPrefix + filePath;
files.add(filePath);
}
}
LoanVehClearanceVehFile2.setName("还款协议");
LoanVehClearanceVehFile2.setFiles(files);
loanVehClearanceVehFiles.add(LoanVehClearanceVehFile2);
//月还明细sid
LoanVehClearanceVehFile loanVehClearanceVehFile3 = new LoanVehClearanceVehFile();
loanVehClearanceVehFile3.setName("月还明细");
@ -336,7 +381,7 @@ public class LoanVehClearanceApplyService extends MybatisBaseService<LoanVehClea
loanVehClearanceVehFiles.add(loanVehClearanceVehFile6);
loanVehClearanceVehDetailsVo.setSids(loanVehClearanceVehFiles);
}
vo.setLoanVehClearanceVehDetailsVoList(loanVehClearanceVehDetailsVoList);
vo.setLoanVehClearanceVehList(loanVehClearanceVehDetailsVoList);
return vo;
}
@ -366,16 +411,26 @@ public class LoanVehClearanceApplyService extends MybatisBaseService<LoanVehClea
List<LoanVehClearanceVehFile> loanVehClearanceVehFiles = new ArrayList<>();
BusSalesOrder busSalesOrder = busSalesOrderFeign.fetchBySid(loanVehClearanceVehInit.getSalesOrderSid()).getData();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(loanVehClearanceVehInit.getSaleVehSid()).getData();
//催收记录sid
//担保人sid
LoanVehClearanceVehFile LoanVehClearanceVehFile1 = new LoanVehClearanceVehFile();
LoanVehClearanceVehFile1.setName("催收记录");
LoanVehClearanceVehFile1.setName("担保人");
LoanVehClearanceVehFile1.setSid(loanVehClearanceVehInit.getSaleVehSid());
loanVehClearanceVehFiles.add(LoanVehClearanceVehFile1);
//开票管理sid
FinVehicleInvoice finVehicleInvoice = finVehicleInvoiceFeign.selectByVinAndContractNo(busSalesOrderVehicle.getLinkSid(), busSalesOrder.getContractNo()).getData();
//还款协议file
LoanVehClearanceVehFile LoanVehClearanceVehFile2 = new LoanVehClearanceVehFile();
LoanVehClearanceVehFile2.setName("开票信息");
LoanVehClearanceVehFile2.setSid(finVehicleInvoice.getSid());
String beCollectionVehSid = loanBeCollectionVehService.selSidBySaleVehSidAndLockState(saleVehSid, "1");
List<LoanFile> loanFiles = loanFileService.selectByLinkSid(beCollectionVehSid, LoanFileEnum.BECOLLECTIONVEHHKXY.getAttachType());
List<String> files = new ArrayList<>();
if (loanFiles != null && loanFiles.size() > 0) {
for (LoanFile loanFile : loanFiles) {
String filePath = loanFile.getFilePath();
String urlPrefix = fileUploadComponent.getUrlPrefix();
filePath = urlPrefix + filePath;
files.add(filePath);
}
}
LoanVehClearanceVehFile2.setName("还款协议");
LoanVehClearanceVehFile2.setFiles(files);
loanVehClearanceVehFiles.add(LoanVehClearanceVehFile2);
//月还明细sid
LoanVehClearanceVehFile LoanVehClearanceVehFile3 = new LoanVehClearanceVehFile();
@ -401,7 +456,312 @@ public class LoanVehClearanceApplyService extends MybatisBaseService<LoanVehClea
loanVehClearanceVehDetailsVo.setSids(loanVehClearanceVehFiles);
loanVehClearanceVehDetailsVoList.add(loanVehClearanceVehDetailsVo);
}
loanVehClearanceApplyDetailsVo.setLoanVehClearanceVehDetailsVoList(loanVehClearanceVehDetailsVoList);
loanVehClearanceApplyDetailsVo.setLoanVehClearanceVehList(loanVehClearanceVehDetailsVoList);
return loanVehClearanceApplyDetailsVo;
}
public ResultBean submit(SubmitLoanVehClearanceApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanVehClearanceApply loanVehClearanceApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, loanVehClearanceApply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
//新增修改保存
String businessSid = saveOrUpdateDto(dto);
loanVehClearanceApply = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//用户的部门全路径sid
bv.setOrgSidPath(loanVehClearanceApply.getOrgPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(loanVehClearanceApply.getCreateBySid());
//若app移动端有此功能,则传递appMap参数
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
variables.put("app", appMap);
//流程定义id
bv.setModelId(ProcDefEnum.LOANVEHCLEARANCEAPPLY.getProDefId());
bv.setFormVariables(variables);
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.selectByOrgSidPath(loanVehClearanceApply.getOrgPath()).getData();
bv.setNextNodeUserSids(sysOrganizationVo.getManagerSid());
if (r == 1) {
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
//极光推送
loanVehClearanceApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("催收措施申请");
messageFlowableQuery.setMsgContent(loanVehClearanceApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("催收措施申请");
messageFeign.pushMessage(messageFlowableQuery);
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
bv.setTaskId(loanVehClearanceApply.getTaskId());
bv.setTaskDefKey(loanVehClearanceApply.getNodeSid());
bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private synchronized int submitBusinessData(SubmitLoanVehClearanceApplyDto dto, LoanVehClearanceApply loanVehClearanceApply) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (loanVehClearanceApply != null) {
String businessTaskId = loanVehClearanceApply.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;
}
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
LoanVehClearanceApply loanVehClearanceApply = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//判断解控车辆列表中,远程控制费用是否小于实收
List<LoanVehClearanceVehDetailsVo> loanVehClearanceVehDetailsVoList = loanVehClearanceVehService.selByMainSid(businessSid);
for (LoanVehClearanceVehDetailsVo loanVehClearanceVehDetailsVo : loanVehClearanceVehDetailsVoList) {
BigDecimal lockCarMoney = new BigDecimal(loanVehClearanceVehDetailsVo.getLockCarMoney());
BigDecimal lockCarRealityMoney = new BigDecimal(loanVehClearanceVehDetailsVo.getLockCarRealityMoney());
if (lockCarMoney.compareTo(lockCarRealityMoney) > 0) {
variables.put("isAdj", true);
break;
} else {
variables.put("isAdj", false);
}
}
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
if (StringUtils.isBlank(loanVehClearanceApply.getProcDefId())) {
flowProcessMapQuery.setProDefKey(bv.getModelId());
} else {
flowProcessMapQuery.setProDefKey(loanVehClearanceApply.getProcDefId());
}
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
//=======================================
bv.setFormVariables(variables);
bv.setOrgSidPath(loanVehClearanceApply.getOrgPath());
if (bv.getTaskId().equals(loanVehClearanceApply.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
} else {
//极光推送
loanVehClearanceApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcDefId(loanVehClearanceApply.getProcDefId());
ufVo.setProcInsId(loanVehClearanceApply.getProcInstSid());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("催收措施申请");
messageFlowableQuery.setMsgContent(loanVehClearanceApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("催收措施申请");
messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean<List<LoanVehClearanceApplyNodeVo>> getPreviousNodesForReject(LoanVehClearanceApplyNodeQuery query) {
ResultBean<List<LoanVehClearanceApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.LOANVEHCLEARANCEAPPLY.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<LoanVehClearanceApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanVehClearanceApplyNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<LoanVehClearanceApplyNodeVo>> getNextNodesForSubmit(LoanVehClearanceApplyNodeQuery query) {
ResultBean<List<LoanVehClearanceApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.LOANVEHCLEARANCEAPPLY.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<LoanVehClearanceApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanVehClearanceApplyNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean reject(LoanVehClearanceApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
LoanVehClearanceApply loanVehClearanceApply = fetchBySid(businessSid);
if (loanVehClearanceApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = loanVehClearanceApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (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);
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);
//极光推送
loanVehClearanceApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = loanVehClearanceApply.getProcInstSid();
ufVo.setProcInsId(procId);
ufVo.setProcDefId(loanVehClearanceApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("催收措施申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(loanVehClearanceApply.getCreateBySid())) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(loanVehClearanceApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("催收措施申请");
messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(LoanVehClearanceApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
LoanVehClearanceApply loanVehClearanceApply = fetchBySid(query.getBusinessSid());
String businessTaskId = loanVehClearanceApply.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 breakProcess(LoanVehClearanceApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
LoanVehClearanceApply loanVehClearanceApply = fetchBySid(query.getBusinessSid());
String businessTaskId = loanVehClearanceApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(loanVehClearanceApply.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);
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);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(LoanVehClearanceApplyDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

72
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceApplyDetailsVo.java

@ -0,0 +1,72 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.api.risk.vehclearance;
import com.yxt.anrui.terminal.api.risk.becollection.AppBeCollectionVehDetailsVo;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* Project: anrui-riskcenter(催收措施申请) <br/>
* File: LoanBeCollectionApplyVo.java <br/>
* Class: com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApplyVo <br/>
* Description: 逾期催收申请 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2023-12-12 16:06:20 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "逾期催收申请 视图数据详情", description = "逾期催收申请 视图数据详情")
public class AppVehClearanceApplyDetailsVo implements Vo {
private String sid; // sid
@ApiModelProperty("申请部门-申请人")
private String publishInfo;
@ApiModelProperty("申请日期")
private String time;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("附件")
private List<String> files = new ArrayList<>();
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("流程实例的sid")
private String procInsId;
@ApiModelProperty("逾期车辆列表")
private List<AppVehClearanceVehDetailsVo> records;
}

99
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceVehDetailsVo.java

@ -0,0 +1,99 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.api.risk.vehclearance;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.anrui.terminal.api.risk.loanhomevisitinvestigate.AppLoanHomeVisitVo;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Project: anrui-riskcenter(催收措施申请) <br/>
* File: LoanBeCollectionVehVo.java <br/>
* Class: com.yxt.anrui.riskcenter.api.loanbecollectionveh.LoanBeCollectionVehVo <br/>
* Description: 逾期催收车辆 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2023-12-12 16:06:20 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "逾期催收车辆 视图数据详情", description = "逾期催收车辆 视图数据详情")
public class AppVehClearanceVehDetailsVo implements Vo {
@ApiModelProperty("是否有担保人")
private Boolean showDbr = false;
@ApiModelProperty("销售订单车辆sid")
private String saleVehSid;
@ApiModelProperty("贷款合同编号")
private String contractId;
@ApiModelProperty("车架号")
private String vin;
@ApiModelProperty("车牌号")
private String carNum;
@ApiModelProperty("资方")
private String zf;
@ApiModelProperty("资方合同号")
private String zfNo;
@ApiModelProperty("客户名称")
private String cusName;
@ApiModelProperty("联系电话")
private String cusPhone;
@ApiModelProperty("贷款人")
private String loanName;
@ApiModelProperty("首次逾期日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date firstBeDate;
@ApiModelProperty("逾期期数")
private String instalments;
@ApiModelProperty("逾期金额")
private String beOverdueMoney;
@ApiModelProperty("逾期金额换算期数")
private String beOverdueMoneyAndPeriod;
@ApiModelProperty("远程控制费用")
private String lockCarMoney;
@ApiModelProperty("实收")
private String lockCarRealMoney;
@ApiModelProperty("还款协议附件")
private List<String> appHkxy = new ArrayList<>();
@ApiModelProperty("月还明细sid")
private String yhmxSid;
@ApiModelProperty("家访考察sid")
private String jfkcSid;
@ApiModelProperty("金融方案详情页面")
private AppLoanHomeVisitVo jrfa;
}

68
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeign.java

@ -0,0 +1,68 @@
package com.yxt.anrui.terminal.api.risk.vehclearance;
import com.yxt.anrui.terminal.api.risk.becollection.*;
import com.yxt.anrui.terminal.api.risk.becollection.flowable.AppBeCollectionDelegateQuery;
import com.yxt.anrui.terminal.api.risk.becollection.flowable.BeCollectionQuery;
import com.yxt.anrui.terminal.api.risk.becollection.flowable.BeCollectionTaskQuery;
import com.yxt.anrui.terminal.api.risk.becollection.flowable.CompleteBeCollectionDto;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.AppVehClearanceDelegateQuery;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.CompleteVehClearanceDto;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceQuery;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceTaskQuery;
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.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
/**
* @Author
* @Date
* @Description
*/
@Api(tags = "逾期垫款催收")
@FeignClient(
contextId = "terminal-VehClearance",
name = "anrui-terminal",
path = "riskcenter/v1/vehClearance",
fallback = VehClearanceFeignFallback.class)
public interface VehClearanceFeign {
@ApiOperation("办理")
@PutMapping("/agreeCreditInfo")
@ResponseBody
ResultBean agreeCreditInfo(@RequestBody CompleteVehClearanceDto dto);
@ApiOperation("驳回")
@PutMapping("/rejectCreditInfo")
@ResponseBody
ResultBean rejectCreditInfo(@RequestBody VehClearanceTaskQuery query);
@ApiOperation("撤回")
@PutMapping("/recallCreditInfo")
@ResponseBody
ResultBean recallCreditInfo(@RequestBody VehClearanceTaskQuery query);
@ApiOperation("终止")
@PutMapping("/stopCreditInfo")
@ResponseBody
ResultBean stopCreditInfo(@RequestBody VehClearanceTaskQuery query);
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@SpringQueryMap VehClearanceQuery query);
@ApiOperation(value = "加签")
@PutMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody AppVehClearanceDelegateQuery delegateQuery);
@ApiOperation("远程解控详情")
@GetMapping("/details/{sid}")
@ResponseBody
public ResultBean<AppVehClearanceApplyDetailsVo> collectionDetail(@PathVariable("sid") String sid);
}

12
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeignFallback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.terminal.api.risk.vehclearance;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2023/8/8
**/
@Component
public class VehClearanceFeignFallback {
}

25
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/AppVehClearanceDelegateQuery.java

@ -0,0 +1,25 @@
package com.yxt.anrui.terminal.api.risk.vehclearance.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 10:16
*/
@Data
public class AppVehClearanceDelegateQuery {
@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;
}

34
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/CompleteVehClearanceDto.java

@ -0,0 +1,34 @@
package com.yxt.anrui.terminal.api.risk.vehclearance.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class CompleteVehClearanceDto implements Dto {
private static final long serialVersionUID = 7978653524636034916L;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:procInsId")
@JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
private String orgPath;
}

17
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceQuery.java

@ -0,0 +1,17 @@
package com.yxt.anrui.terminal.api.risk.vehclearance.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class VehClearanceQuery implements Query {
private static final long serialVersionUID = -3563282658560745370L;
@ApiModelProperty(value = "节点key")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
private Integer next;
}

42
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceTaskQuery.java

@ -0,0 +1,42 @@
package com.yxt.anrui.terminal.api.risk.vehclearance.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class VehClearanceTaskQuery implements Query {
private static final long serialVersionUID = -6952737531036706114L;
/**
* 终止驳回撤回
*/
@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")
@JsonProperty("procInsId")
private String instanceId;
}

87
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceRest.java

@ -0,0 +1,87 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.biz.risk.vehclearance;
import com.yxt.anrui.terminal.api.risk.becollection.*;
import com.yxt.anrui.terminal.api.risk.becollection.flowable.AppBeCollectionDelegateQuery;
import com.yxt.anrui.terminal.api.risk.becollection.flowable.BeCollectionQuery;
import com.yxt.anrui.terminal.api.risk.becollection.flowable.BeCollectionTaskQuery;
import com.yxt.anrui.terminal.api.risk.becollection.flowable.CompleteBeCollectionDto;
import com.yxt.anrui.terminal.api.risk.vehclearance.AppVehClearanceApplyDetailsVo;
import com.yxt.anrui.terminal.api.risk.vehclearance.VehClearanceFeign;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.AppVehClearanceDelegateQuery;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.CompleteVehClearanceDto;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceQuery;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceTaskQuery;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController("车辆远程解控")
@RequestMapping("riskcenter/v1/vehClearance")
public class VehClearanceRest implements VehClearanceFeign {
@Autowired
private VehClearanceService beCollectionService;
@Override
public ResultBean agreeCreditInfo(CompleteVehClearanceDto dto) {
return beCollectionService.agreeCreditInfo(dto);
}
@Override
public ResultBean rejectCreditInfo(VehClearanceTaskQuery query) {
return beCollectionService.rejectCreditInfo(query);
}
@Override
public ResultBean recallCreditInfo(VehClearanceTaskQuery query) {
return beCollectionService.recallCreditInfo(query);
}
@Override
public ResultBean stopCreditInfo(VehClearanceTaskQuery query) {
return beCollectionService.stopCreditInfo(query);
}
@Override
public ResultBean<String> getFlowOperateTitle(VehClearanceQuery query) {
return beCollectionService.getFlowOperateTitle(query);
}
@Override
public ResultBean delegate(AppVehClearanceDelegateQuery delegateQuery) {
return beCollectionService.delegate(delegateQuery);
}
@Override
public ResultBean<AppVehClearanceApplyDetailsVo> collectionDetail(String sid) {
return beCollectionService.collectionDetail(sid);
}
}

212
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceService.java

@ -0,0 +1,212 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.biz.risk.vehclearance;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.riskcenter.api.loanbecollectionapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceApplyDetailsVo;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceApplyFeign;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceFileVo;
import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceVehDetailsVo;
import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceVehFile;
import com.yxt.anrui.terminal.api.base.common.CarModelVo;
import com.yxt.anrui.terminal.api.risk.loanhomevisitinvestigate.AppLoanHomeVisitVo;
import com.yxt.anrui.terminal.api.risk.vehclearance.AppVehClearanceApplyDetailsVo;
import com.yxt.anrui.terminal.api.risk.vehclearance.AppVehClearanceVehDetailsVo;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.AppVehClearanceDelegateQuery;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.CompleteVehClearanceDto;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceQuery;
import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceTaskQuery;
import com.yxt.anrui.terminal.biz.base.common.CommonService;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Service
public class VehClearanceService {
@Autowired
private LoanVehClearanceApplyFeign loanVehClearanceApplyFeign;
@Autowired
private LoanSolutionsFeign loanSolutionsFeign;
@Autowired
private CommonService commonService;
public ResultBean agreeCreditInfo(CompleteVehClearanceDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanVehClearanceApplyCompleteDto loanVehClearanceApplyCompleteDto = new LoanVehClearanceApplyCompleteDto();
BeanUtil.copyProperties(dto, loanVehClearanceApplyCompleteDto);
loanVehClearanceApplyFeign.complete(loanVehClearanceApplyCompleteDto);
return rb.success();
}
public ResultBean rejectCreditInfo(VehClearanceTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanVehClearanceApplyTaskQuery taskQuery = new LoanVehClearanceApplyTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanVehClearanceApplyFeign.reject(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean recallCreditInfo(VehClearanceTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanVehClearanceApplyTaskQuery taskQuery = new LoanVehClearanceApplyTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanVehClearanceApplyFeign.revokeProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean stopCreditInfo(VehClearanceTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanVehClearanceApplyTaskQuery taskQuery = new LoanVehClearanceApplyTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanVehClearanceApplyFeign.breakProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean<String> getFlowOperateTitle(VehClearanceQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
LoanVehClearanceApplyNodeQuery getNodeQuery = new LoanVehClearanceApplyNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<LoanVehClearanceApplyNodeVo>> previousNodesForReject = loanVehClearanceApplyFeign.getPreviousNodesForReject(getNodeQuery);
if (previousNodesForReject.getSuccess()) {
previousNodesForReject.getData().removeAll(Collections.singleton(null));
data = previousNodesForReject.getData().get(0).getName();
} else {
return rb.setMsg(previousNodesForReject.getMsg());
}
} else if (next == 1) {
ResultBean<List<LoanVehClearanceApplyNodeVo>> nextNodesForSubmit = loanVehClearanceApplyFeign.getNextNodesForSubmit(getNodeQuery);
if (nextNodesForSubmit.getSuccess()) {
nextNodesForSubmit.getData().removeAll(Collections.singleton(null));
data = nextNodesForSubmit.getData().get(0).getName();
} else {
return rb.setMsg(nextNodesForSubmit.getMsg());
}
} else {
return rb.setMsg("参数错误:next");
}
return rb.success().setData(data);
}
public ResultBean delegate(AppVehClearanceDelegateQuery delegateQuery) {
ResultBean rb = ResultBean.fireFail();
LoanVehClearanceApplyDelegateQuery delegateQuery1 = new
LoanVehClearanceApplyDelegateQuery();
BeanUtil.copyProperties(delegateQuery, delegateQuery1);
loanVehClearanceApplyFeign.delegate(delegateQuery1);
return rb.success();
}
public ResultBean<AppVehClearanceApplyDetailsVo> collectionDetail(String sid) {
ResultBean rb = ResultBean.fireFail();
LoanVehClearanceApplyDetailsVo loanVehClearanceApplyDetailsVo = loanVehClearanceApplyFeign.fetchDetailsBySid(sid).getData();
AppVehClearanceApplyDetailsVo appVehClearanceApplyDetailsVo = new AppVehClearanceApplyDetailsVo();
appVehClearanceApplyDetailsVo.setPublishInfo(loanVehClearanceApplyDetailsVo.getDeptName() + "-" + loanVehClearanceApplyDetailsVo.getCreateByName());
appVehClearanceApplyDetailsVo.setTime(loanVehClearanceApplyDetailsVo.getCreateTime());
appVehClearanceApplyDetailsVo.setRemarks(loanVehClearanceApplyDetailsVo.getRemarks());
List<LoanVehClearanceFileVo> files = loanVehClearanceApplyDetailsVo.getFiles();
List<String> appFiles = new ArrayList<>();
if (files != null && files.size() > 0){
for (LoanVehClearanceFileVo file : files) {
appFiles.add(file.getUrl());
}
}
appVehClearanceApplyDetailsVo.setFiles(appFiles);
appVehClearanceApplyDetailsVo.setTaskId(loanVehClearanceApplyDetailsVo.getTaskId());
appVehClearanceApplyDetailsVo.setProcInsId(loanVehClearanceApplyDetailsVo.getProcInstSid());
List<LoanVehClearanceVehDetailsVo> loanVehClearanceVehList = loanVehClearanceApplyDetailsVo.getLoanVehClearanceVehList();
List<AppVehClearanceVehDetailsVo> appVehClearanceVehDetailsVos = new ArrayList<>();
for (LoanVehClearanceVehDetailsVo loanVehClearanceVehDetailsVo : loanVehClearanceVehList) {
AppVehClearanceVehDetailsVo appVehClearanceVehDetailsVo = new AppVehClearanceVehDetailsVo();
appVehClearanceVehDetailsVo.setShowDbr(true);
appVehClearanceVehDetailsVo.setSaleVehSid(loanVehClearanceVehDetailsVo.getSaleVehSid());
appVehClearanceVehDetailsVo.setContractId(loanVehClearanceVehDetailsVo.getLoanContractNo());
appVehClearanceVehDetailsVo.setVin(loanVehClearanceVehDetailsVo.getVinNo());
appVehClearanceVehDetailsVo.setCarNum(loanVehClearanceVehDetailsVo.getCarNum());
appVehClearanceVehDetailsVo.setZf(loanVehClearanceVehDetailsVo.getBankName());
appVehClearanceVehDetailsVo.setZfNo(loanVehClearanceVehDetailsVo.getLoanContractNo());
appVehClearanceVehDetailsVo.setCusName(loanVehClearanceVehDetailsVo.getCustomerName());
appVehClearanceVehDetailsVo.setLoanName(loanVehClearanceVehDetailsVo.getBorrowerName());
appVehClearanceVehDetailsVo.setFirstBeDate(loanVehClearanceVehDetailsVo.getFirstBeDate());
appVehClearanceVehDetailsVo.setInstalments(loanVehClearanceVehDetailsVo.getBeOverduePeriod());
appVehClearanceVehDetailsVo.setBeOverdueMoney(loanVehClearanceVehDetailsVo.getBeOverdueMoney());
appVehClearanceVehDetailsVo.setBeOverdueMoneyAndPeriod(loanVehClearanceVehDetailsVo.getBeOverdueMoneyAndPeriod());
appVehClearanceVehDetailsVo.setLockCarMoney(loanVehClearanceVehDetailsVo.getLockCarMoney());
appVehClearanceVehDetailsVo.setLockCarRealMoney(loanVehClearanceVehDetailsVo.getLockCarRealityMoney());
List<LoanVehClearanceVehFile> sids = loanVehClearanceVehDetailsVo.getSids();
List<String> appHkxy = new ArrayList<>();
for (LoanVehClearanceVehFile loanVehClearanceVehFile : sids) {
if ("还款协议".equals(loanVehClearanceVehFile.getName())){
List<String> pcFiles = loanVehClearanceVehFile.getFiles();
if (pcFiles != null && pcFiles.size() > 0){
for (String file : pcFiles) {
appHkxy.add(file);
}
}
}
if ("月还明细".equals(loanVehClearanceVehFile.getName())){
appVehClearanceVehDetailsVo.setYhmxSid(loanVehClearanceVehFile.getSid());
}
if ("金融方案".equals(loanVehClearanceVehFile.getName())){
LoanSolutions loanSolutions = loanSolutionsFeign.fetchBySid(loanVehClearanceVehFile.getSid()).getData();
CarModelVo finPage1 = commonService.getLoanSolution(loanSolutions.getSalesOrderSid()).getData();
AppLoanHomeVisitVo finPage2 = new AppLoanHomeVisitVo();
BeanUtil.copyProperties(finPage1, finPage2);
appVehClearanceVehDetailsVo.setJrfa(finPage2);
}
if ("家访考察报告".equals(loanVehClearanceVehFile.getName())){
appVehClearanceVehDetailsVo.setJfkcSid(loanVehClearanceVehFile.getSid());
}
}
appVehClearanceVehDetailsVo.setAppHkxy(appHkxy);
appVehClearanceVehDetailsVos.add(appVehClearanceVehDetailsVo);
}
appVehClearanceApplyDetailsVo.setRecords(appVehClearanceVehDetailsVos);
return rb.success().setData(appVehClearanceApplyDetailsVo);
}
}
Loading…
Cancel
Save