Browse Source

结清申请部分

master
dimengzhe 1 year ago
parent
commit
b7831b1cd4
  1. 1
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  2. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/SalesVehVo.java
  3. 72
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApply.java
  4. 14
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsQuery.java
  5. 12
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsVo.java
  6. 17
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDto.java
  7. 78
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java
  8. 12
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeignFallback.java
  9. 20
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyQuery.java
  10. 16
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyVo.java
  11. 12
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/SettleApplyAppVo.java
  12. 35
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/CompleteLoanSettleApplyDto.java
  13. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyDelegateQuery.java
  14. 18
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeQuery.java
  15. 24
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeVo.java
  16. 43
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyTaskQuery.java
  17. 20
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/SubmitSettleApplyDto.java
  18. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.java
  19. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.xml
  20. 52
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java
  21. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.java
  22. 21
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.xml
  23. 9
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehService.java
  24. 26
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java
  25. 31
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml
  26. 100
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java
  27. 480
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java
  28. 12
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyAppVos.java
  29. 60
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeign.java
  30. 12
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeignFallback.java
  31. 25
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDelegateQuery.java
  32. 35
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDto.java
  33. 23
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyQuery.java
  34. 45
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyTaskQuery.java
  35. 62
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyRest.java
  36. 130
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyService.java
  37. 136
      doc/databases/risk_center.sql

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

@ -75,6 +75,7 @@ public enum ProcDefEnum {
LOANSUBLETAPPLY("交回车辆二次转租申请", "process_lu7pdwzs:1:7940004"),
LOANOUTBOUNDVEHAPPLY("交回车辆出库申请", "process_14spbdx8:1:7982504"),
LOANSECONDSALEAPPLY("交车车辆二次销售申请", "process_6kb1z0pe:4:8110004"),
LOANSETTLEAPPLY("结清申请", ""),
LOANREPURCHASEAPPLY("回购申请", "process_1ozjarxl:1:8207504"),
/******************************测试流程id*********************************************/

25
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/SalesVehVo.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesveh;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class SalesVehVo {
@ApiModelProperty("车辆台账sid")
private String ledgerSid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("类型")
private String vehType;
@ApiModelProperty("车型名称")
private String vehModel;
@ApiModelProperty("销售订单车辆sid")
private String busVinSid;
}

72
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApply.java

@ -0,0 +1,72 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Data
public class LoanSettleApply extends BaseEntity {
private static final long serialVersionUID = -7535762549485962120L;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("申请部门")
private String createDept;
@ApiModelProperty("申请部门sid")
private String createDeptSid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("销售订单车辆sid")
private String busVinSid;
@ApiModelProperty("销售订单sid")
private String saleOrderSid;
@ApiModelProperty("客户名称")
private String customerName;
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("贷款人")
private String loanName;
@ApiModelProperty("贷款人sid")
private String loanSid;
@ApiModelProperty("贷款合同编号")
private String loanContractNo;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("资方合同编号")
private String bankContractNo;
@ApiModelProperty("结清日期")
private String settingDate;
@ApiModelProperty("公司当前逾期月还")
private BigDecimal overdueMonthPrice;
@ApiModelProperty("公司当期未到期月还")
private BigDecimal currentNotDuePrice;
@ApiModelProperty("公司未到期月还")
private BigDecimal notDuePrice;
@ApiModelProperty("分公司sid")
private String useOrgSid;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("机构全路径四大")
private String orgSidPath;
@ApiModelProperty("办结日期")
private String closeDate;
@ApiModelProperty("实例id")
private String procInstId;
@ApiModelProperty("流程定义id")
private String procDefId;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("环节id")
private String taskDefKey;
@ApiModelProperty("流程状态")
private String nodeState;
}

14
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsQuery.java

@ -0,0 +1,14 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class LoanSettleApplyDetailsQuery {
private String sid;
}

12
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsVo.java

@ -0,0 +1,12 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class LoanSettleApplyDetailsVo {
}

17
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDto.java

@ -0,0 +1,17 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class LoanSettleApplyDto {
private String sid;
private String userSid;
private String orgPath;
}

78
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java

@ -0,0 +1,78 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*;
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.ApiOperation;
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;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@FeignClient(
contextId = "anrui-riskcenter-LoanSettleApply",
name = "anrui-riskcenter",
path = "v1/LoanSettleApply",
fallback = LoanSettleApplyFeignFallback.class)
public interface LoanSettleApplyFeign {
@ApiOperation("分页列表")
@PostMapping("/listPage")
ResultBean<PagerVo<LoanSettleApplyVo>> listPage(@RequestBody PagerQuery<LoanSettleApplyQuery> pq);
@ApiOperation("新增或修改")
@PostMapping("/saveOrUpdate")
ResultBean<String> saveOrUpdate(@RequestBody LoanSettleApplyDto dto);
@ApiOperation("详情初始化")
@PostMapping("/details")
ResultBean<LoanSettleApplyDetailsVo> details(@RequestBody LoanSettleApplyDetailsQuery query);
@ApiOperation("删除/批量删除")
@DeleteMapping("/delBySids")
ResultBean delBySids(@RequestBody String[] sids);
@ApiOperation("提交")
@PostMapping("/submitApply")
public ResultBean submitApply(@Valid @RequestBody SubmitSettleApplyDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteLoanSettleApplyDto query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<LoanSettleApplyNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap LoanSettleApplyNodeQuery query);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<LoanSettleApplyNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap LoanSettleApplyNodeQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@Valid @RequestBody LoanSettleApplyTaskQuery query);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody LoanSettleApplyTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody LoanSettleApplyTaskQuery query);
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody LoanSettleApplyDelegateQuery query);
@ApiOperation(value = "移动端详情")
@PostMapping(value = "/getAppDetails")
ResultBean<SettleApplyAppVo> getAppDetails(@RequestParam("sid") String sid);
}

12
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeignFallback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Component
public class LoanSettleApplyFeignFallback {
}

20
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyQuery.java

@ -0,0 +1,20 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import com.yxt.common.core.query.Query;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class LoanSettleApplyQuery implements Query {
private static final long serialVersionUID = 3208806288091280521L;
private String menuUrl;
private String orgPath;
private String userSid;
}

16
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyVo.java

@ -0,0 +1,16 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class LoanSettleApplyVo {
private String createBySid;
private boolean allowModify;
}

12
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/SettleApplyAppVo.java

@ -0,0 +1,12 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class SettleApplyAppVo {
}

35
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/CompleteLoanSettleApplyDto.java

@ -0,0 +1,35 @@
package com.yxt.anrui.riskcenter.api.loansettleapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Data
public class CompleteLoanSettleApplyDto {
@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 = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loansettleapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Data
public class LoanSettleApplyDelegateQuery {
@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;
}

18
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeQuery.java

@ -0,0 +1,18 @@
package com.yxt.anrui.riskcenter.api.loansettleapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Data
public class LoanSettleApplyNodeQuery {
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
}

24
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeVo.java

@ -0,0 +1,24 @@
package com.yxt.anrui.riskcenter.api.loansettleapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Data
public class LoanSettleApplyNodeVo {
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

43
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyTaskQuery.java

@ -0,0 +1,43 @@
package com.yxt.anrui.riskcenter.api.loansettleapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Data
public class LoanSettleApplyTaskQuery {
/**
* 终止驳回撤回
*/
@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;
}

20
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/SubmitSettleApplyDto.java

@ -0,0 +1,20 @@
package com.yxt.anrui.riskcenter.api.loansettleapply.flowable;
import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class SubmitSettleApplyDto extends LoanSettleApplyDto {
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

3
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanreturnvehledger.LoanReturnVehLedger;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApply;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyDetailsVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyVo;
@ -29,4 +30,6 @@ public interface LoanSecondarySalesApplyMapper extends BaseMapper<LoanSecondaryS
LoanSecondarySalesApplyDetailsVo selectDetails(String sid);
SecondarySalesAppVo getAppDetails(String sid);
LoanReturnVehLedger selVehLedgerBySid(String ledgerSid);
}

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.xml

@ -135,4 +135,10 @@
from loan_secondary_sales_apply la
where sid = #{sid}
</select>
<select id="selVehLedgerBySid" resultType="com.yxt.anrui.riskcenter.api.loanreturnvehledger.LoanReturnVehLedger">
select *
from loan_return_veh_ledger
where sid = #{ledgerSid}
</select>
</mapper>

52
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java

@ -26,6 +26,8 @@ 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.loanoutboundapply.LoanOutboundApplyDto;
import com.yxt.anrui.riskcenter.api.loanoutboundapply.OutboundVinListDto;
import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery;
import com.yxt.anrui.riskcenter.api.loanrestorereportapply.AlrepaidAndArrVo;
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.LoanReturnInboundApply;
@ -43,8 +45,12 @@ import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCos
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCostVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.SalesVehVo;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail;
import com.yxt.anrui.riskcenter.api.loansubletapply.LoanSubletApply;
import com.yxt.anrui.riskcenter.api.loansubletapply.SubletVinList;
import com.yxt.anrui.riskcenter.biz.loanoutboundapply.LoanOutboundApplyService;
import com.yxt.anrui.riskcenter.biz.loanrestorereportapply.LoanRestoreReportApplyService;
import com.yxt.anrui.riskcenter.biz.loanreturninboundapply.LoanReturnInboundApplyService;
import com.yxt.anrui.riskcenter.biz.loanreturnvehledger.LoanReturnVehLedgerService;
@ -121,6 +127,8 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
private SysNoticeFeign sysNoticeFeign;
@Autowired
private LoanSecondarySalesBiddingService loanSecondarySalesBiddingService;
@Autowired
private LoanOutboundApplyService loanOutboundApplyService;
public PagerVo<LoanSecondarySalesApplyVo> listPageVo(PagerQuery<LoanSecondarySalesApplyQuery> pq) {
LoanSecondarySalesApplyQuery query = pq.getParams();
@ -480,6 +488,17 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
loanSecondarySalesApply = fetchBySid(businessSid);
loanSecondarySalesApply.setCloseDate(DateUtil.today());
List<LoanSecondarySalesVeh> list = loanSecondarySalesVehService.selectByMainSids(businessSid);
list.removeAll(Collections.singleton(null));
if (!list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
LoanSecondarySalesVeh loanSecondarySalesVeh = list.get(i);
LoanReturnVehLedger loanReturnVehLedger = loanReturnVehLedgerService.fetchBySid(loanSecondarySalesVeh.getBusSid());
loanReturnVehLedger.setDisposal("二次销售");
loanReturnVehLedger.setDisposalKey("03");
loanReturnVehLedgerService.updateById(loanReturnVehLedger);
}
}
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String closeDates = "";
@ -523,6 +542,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
loanSecondarySalesBiddingDto.setUserSid(loanSecondarySalesApply.getCreateBySid());
loanSecondarySalesBiddingDto.setOrgPath(loanSecondarySalesApply.getOrgSidPath());
ResultBean resultBean1 = loanSecondarySalesBiddingService.saveBidding(loanSecondarySalesBiddingDto);
// pushVehOutBound(loanSecondarySalesApply);
} else {
//极光推送
loanSecondarySalesApply = fetchBySid(businessSid);
@ -545,6 +565,34 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
}
}
/* private void pushVehOutBound(LoanSecondarySalesApply loanSecondarySalesApply) {
LoanOutboundApplyDto dto = new LoanOutboundApplyDto();
List<OutboundVinListDto> vinList = new ArrayList<>();
BeanUtil.copyProperties(loanSecondarySalesApply, dto);
dto.setApplySid(loanSecondarySalesApply.getSid());
dto.setBorrowerName(loanSecondarySalesApply.getLoanName());
dto.setBorrowerSid(loanSecondarySalesApply.getLoanSid());
dto.setCustomer(loanSecondarySalesApply.getCustomerName());
dto.setDisposalKey("03");
dto.setDisposal("二次销售");
List<SalesVehVo> vinLists = loanSecondarySalesVehService.selByMainSid(loanSecondarySalesApply.getSid());
if (!vinLists.isEmpty()) {
vinLists.forEach(v -> {
OutboundVinListDto outboundVinListDto = new OutboundVinListDto();
BeanUtil.copyProperties(v, outboundVinListDto);
LoanReturnVehLedger loanReturnVehLedger = baseMapper.selVehLedgerBySid(v.getLedgerSid());
if (null != loanReturnVehLedger) {
if (StringUtils.isNotBlank(loanReturnVehLedger.getLocation())) {
outboundVinListDto.setLocation(loanReturnVehLedger.getLocation());
}
}
vinList.add(outboundVinListDto);
});
}
dto.setVinList(vinList);
loanOutboundApplyService.saveOutbound(dto);
}*/
public ResultBean submitApply(SubmitLoanSecondarySalesApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanSecondarySalesApply loanSecondarySalesApply = fetchBySid(dto.getSid());
@ -861,7 +909,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
loanSecondarySalesVehVo.setVehMark(loanReturnVehLedgerT.getVehMark());
loanSecondarySalesVehVo.setVinNo(loanReturnVehLedgerT.getVinNo());
loanSecondarySalesVehVo.setModelName(loanReturnVehLedgerT.getVehModel());
loanSecondarySalesVehVo.setBusSid(s);
loanSecondarySalesVehVo.setBusSid(loanReturnVehLedgerT.getSid());
loanSecondarySalesVehVoList.add(loanSecondarySalesVehVo);
}
@ -874,7 +922,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
loanSecondarySalesVehVo.setVehMark(loanReturnVehLedger.getVehMark());
loanSecondarySalesVehVo.setVinNo(loanReturnVehLedger.getVinNo());
loanSecondarySalesVehVo.setModelName(loanReturnVehLedger.getVehModel());
loanSecondarySalesVehVo.setBusSid(s);
loanSecondarySalesVehVo.setBusSid(loanReturnVehLedger.getSid());
loanSecondarySalesVehVoList.add(loanSecondarySalesVehVo);
loanSecondarySalesApplyDetailsVo.setCustomerName(loanReturnVehLedger.getCustomer());
loanSecondarySalesApplyDetailsVo.setLoanName(loanReturnVehLedger.getBorrowerName());

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesVehAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.SalesVehVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -20,4 +21,8 @@ public interface LoanSecondarySalesVehMapper extends BaseMapper<LoanSecondarySal
List<LoanSecondarySalesVehVo> selectByMainSid(String sid);
List<LoanSecondarySalesVehAppVo> selectByMainSidApp(String sid);
List<SalesVehVo> selByMainSid(String sid);
List<LoanSecondarySalesVeh> selectByMainSids(String businessSid);
}

21
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.xml

@ -18,7 +18,7 @@
lv.configSid,
lv.busSid
from loan_secondary_sales_veh lv
where mainSid = #{sid}
where lv.mainSid = #{sid}
</select>
<select id="selectByMainSidApp"
@ -28,6 +28,23 @@
lv.vehType,
lv.modelName
from loan_secondary_sales_veh lv
where mainSid = #{sid}
where lv.mainSid = #{sid}
</select>
<select id="selByMainSid" resultType="com.yxt.anrui.riskcenter.api.loansecondarysalesveh.SalesVehVo">
select lv.busSid ledgerSid,
lv.vinNo,
lv.vehMark,
lv.vehType,
lv.modelName vehModel,
lv.busVinSid
from loan_secondary_sales_veh lv
where lv.mainSid = #{sid}
</select>
<select id="selectByMainSids" resultType="com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh">
select *
from loan_secondary_sales_veh
where mainSid = #{businessSid}
</select>
</mapper>

9
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehService.java

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesVehAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.SalesVehVo;
import com.yxt.common.base.service.MybatisBaseService;
import org.springframework.stereotype.Service;
@ -40,4 +41,12 @@ public class LoanSecondarySalesVehService extends MybatisBaseService<LoanSeconda
public List<LoanSecondarySalesVehAppVo> selectByMainSidApp(String sid) {
return baseMapper.selectByMainSidApp(sid);
}
public List<SalesVehVo> selByMainSid(String sid) {
return baseMapper.selByMainSid(sid);
}
public List<LoanSecondarySalesVeh> selectByMainSids(String businessSid) {
return baseMapper.selectByMainSids(businessSid);
}
}

26
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.biz.loansettleapply;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApply;
import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Mapper
public interface LoanSettleApplyMapper extends BaseMapper<LoanSettleApply> {
int updateFlowFiled(Map<String, Object> beanToMap);
IPage<LoanSettleApplyVo> selectPageVo(IPage<LoanSettleApply> page, @Param(Constants.WRAPPER) QueryWrapper<LoanSettleApply> qw);
int selectBySid(String join);
}

31
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loansettleapply.LoanSettleApplyMapper">
<update id="updateFlowFiled">
UPDATE loan_settle_apply
SET nodeState=#{nodeState}
<if test="taskDefKey != null and taskDefKey != ''">
, taskDefKey=#{taskDefKey}
</if>
<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>
<select id="selectPageVo" resultType="com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyVo">
</select>
<select id="selectBySid" resultType="int">
select count(*)
from loan_settle_apply
where length(nodeState) > 0
and find_in_set(sid, #{list})
</select>
</mapper>

100
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java

@ -0,0 +1,100 @@
package com.yxt.anrui.riskcenter.biz.loansettleapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyVo;
import com.yxt.anrui.riskcenter.api.loansettleapply.*;
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@RestController
@RequestMapping("v1/LoanSettleApply")
@Api(tags = "结清申请")
public class LoanSettleApplyRest implements LoanSettleApplyFeign {
@Autowired
private LoanSettleApplyService loanSettleApplyService;
@Override
public ResultBean<PagerVo<LoanSettleApplyVo>> listPage(PagerQuery<LoanSettleApplyQuery> pq) {
ResultBean<PagerVo<LoanSettleApplyVo>> rb = ResultBean.fireFail();
PagerVo<LoanSettleApplyVo> pv = loanSettleApplyService.listPageVo(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<String> saveOrUpdate(LoanSettleApplyDto dto) {
return loanSettleApplyService.saveOrUpdateSettleApply(dto);
}
@Override
public ResultBean<LoanSettleApplyDetailsVo> details(LoanSettleApplyDetailsQuery query) {
return loanSettleApplyService.details(query);
}
@Override
public ResultBean delBySids(String[] sids) {
return loanSettleApplyService.delAllBySids(sids);
}
@Override
public ResultBean submitApply(SubmitSettleApplyDto dto) {
return loanSettleApplyService.submitApply(dto);
}
@Override
public ResultBean complete(CompleteLoanSettleApplyDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId("");
return loanSettleApplyService.complete(bv);
}
@Override
public ResultBean<List<LoanSettleApplyNodeVo>> getPreviousNodesForReject(LoanSettleApplyNodeQuery query) {
return loanSettleApplyService.getPreviousNodesForReject(query);
}
@Override
public ResultBean<List<LoanSettleApplyNodeVo>> getNextNodesForSubmit(LoanSettleApplyNodeQuery query) {
return loanSettleApplyService.getNextNodesForSubmit(query);
}
@Override
public ResultBean taskReject(LoanSettleApplyTaskQuery query) {
return loanSettleApplyService.taskReject(query);
}
@Override
public ResultBean revokeProcess(LoanSettleApplyTaskQuery query) {
return loanSettleApplyService.revokeProcess(query);
}
@Override
public ResultBean breakProcess(LoanSettleApplyTaskQuery query) {
return loanSettleApplyService.breakProcess(query);
}
@Override
public ResultBean delegate(LoanSettleApplyDelegateQuery query) {
return loanSettleApplyService.delegate(query);
}
@Override
public ResultBean<SettleApplyAppVo> getAppDetails(String sid) {
return loanSettleApplyService.getAppDetails(sid);
}
}

480
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java

@ -0,0 +1,480 @@
package com.yxt.anrui.riskcenter.biz.loansettleapply;
import cn.hutool.core.bean.BeanUtil;
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.google.common.util.concurrent.ThreadFactoryBuilder;
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.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.riskcenter.api.loanreturnvehledger.LoanReturnVehLedger;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApply;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyQuery;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import com.yxt.anrui.riskcenter.api.loansettleapply.*;
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
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 org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/5
**/
@Service
public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMapper, LoanSettleApply> {
@Autowired
private FlowFeign flowFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private SysUserFeign sysUserFeign;
public PagerVo<LoanSettleApplyVo> listPageVo(PagerQuery<LoanSettleApplyQuery> pq) {
LoanSettleApplyQuery query = pq.getParams();
QueryWrapper<LoanSettleApply> qw = new QueryWrapper<>();
if (query != null) {
if (StringUtils.isNotBlank(query.getMenuUrl())) {
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.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("la.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("la.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("la.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("la.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("la.createBySid", query.getUserSid());
} else {
PagerVo<LoanSettleApplyVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanSettleApplyVo> p = new PagerVo<>();
return p;
}
}
}
IPage<LoanSettleApply> page = PagerUtil.queryToPage(pq);
IPage<LoanSettleApplyVo> pagging = baseMapper.selectPageVo(page, qw);
List<LoanSettleApplyVo> paggingRecords = pagging.getRecords();
paggingRecords.removeAll(Collections.singleton(null));
if (!paggingRecords.isEmpty()) {
for (LoanSettleApplyVo record : pagging.getRecords()) {
if (query.getUserSid().equals(record.getCreateBySid())) {
record.setAllowModify(true);
} else {
record.setAllowModify(false);
}
}
}
PagerVo<LoanSettleApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean<String> saveOrUpdateSettleApply(LoanSettleApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = dto.getSid();
if (StringUtils.isBlank(sid)) {//新增
} else {//修改
}
return rb.success().setData(sid);
}
public ResultBean<LoanSettleApplyDetailsVo> details(LoanSettleApplyDetailsQuery query) {
ResultBean<LoanSettleApplyDetailsVo> rb = ResultBean.fireFail();
String sid = query.getSid();
if (StringUtils.isBlank(sid)) {//新增初始化
} else {//编辑初始化
LoanSettleApply loanSettleApply = fetchBySid(sid);
if (loanSettleApply == null) {
return rb.setMsg("该申请不存在");
}
}
return null;
}
public ResultBean delAllBySids(String[] sids) {
ResultBean rb = ResultBean.fireFail();
//查询该sid中是否有流程不是待提交的
int count = baseMapper.selectBySid(StringUtils.join(sids, ","));
if (count > 0) {
return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败");
}
List<String> sidss = Arrays.asList(sids);
for (int i = 0; i < sidss.size(); i++) {//删除相关表
}
delBySids(sids);
return rb.success().setMsg("删除成功");
}
public ResultBean submitApply(SubmitSettleApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanSettleApply loanSettleApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, loanSettleApply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
ResultBean<String> resultBean = saveOrUpdateSettleApply(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
String businessSid = resultBean.getData();
loanSettleApply = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//用户的部门全路径sid
bv.setOrgSidPath(loanSettleApply.getOrgSidPath());
bv.setBusinessSid(businessSid);
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
if (r == 1) {
//ToDo:流程定义id
bv.setModelId(ProcDefEnum.LOANSETTLEAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
loanSettleApply = fetchBySid(businessSid);
//==================================添加线程
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());
LoanSettleApply finalLoanSettleApply = loanSettleApply;
Future future1 = pool.submit(() -> {
//极光推送
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(finalLoanSettleApply.getCreateByName() + "提交的" + 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");
}
bv.setTaskId(loanSettleApply.getTaskId());
bv.setTaskDefKey(loanSettleApply.getTaskDefKey());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private int submitBusinessData(SubmitSettleApplyDto dto, LoanSettleApply loanSettleApply) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (loanSettleApply != null) {
String businessTaskId = loanSettleApply.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;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
LoanSettleApply loanSettleApply = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
bv.setOrgSidPath(loanSettleApply.getOrgSidPath());
bv.setModelId(loanSettleApply.getProcDefId());
if (bv.getTaskId().equals(loanSettleApply.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.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())) {
loanSettleApply = fetchBySid(businessSid);
loanSettleApply.setCloseDate(DateUtil.today());
baseMapper.updateById(loanSettleApply);
} else {
//极光推送
loanSettleApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowVo.setProcDefId(loanSettleApply.getProcDefId());
messageFlowVo.setProcInsId(loanSettleApply.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("结清申请");
messageFlowableQuery.setMsgContent(loanSettleApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("结清申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
private int updateFlowFiled(Map<String, Object> beanToMap) {
return baseMapper.updateFlowFiled(beanToMap);
}
public ResultBean<List<LoanSettleApplyNodeVo>> getPreviousNodesForReject(LoanSettleApplyNodeQuery query) {
ResultBean<List<LoanSettleApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
LoanSettleApply loanSettleApply = fetchBySid(query.getBusinessSid());
bv.setModelId(loanSettleApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<LoanSettleApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanSettleApplyNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<LoanSettleApplyNodeVo>> getNextNodesForSubmit(LoanSettleApplyNodeQuery query) {
ResultBean<List<LoanSettleApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
LoanSettleApply loanSettleApply = fetchBySid(query.getBusinessSid());
bv.setModelId(loanSettleApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<LoanSettleApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanSettleApplyNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean taskReject(LoanSettleApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
LoanSettleApply loanSettleApply = fetchBySid(businessSid);
if (loanSettleApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = loanSettleApply.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);
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);
//极光推送
loanSettleApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = loanSettleApply.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(loanSettleApply.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_();
if ("发起申请".equals(nextName)) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(loanSettleApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("结清申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(LoanSettleApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
LoanSettleApply loanSettleApply = fetchBySid(query.getBusinessSid());
String businessTaskId = loanSettleApply.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(LoanSettleApplyTaskQuery 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("请填写意见");
}
LoanSettleApply loanSettleApply = fetchBySid(query.getBusinessSid());
String businessTaskId = loanSettleApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(loanSettleApply.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(LoanSettleApplyDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
public ResultBean<SettleApplyAppVo> getAppDetails(String sid) {
ResultBean<SettleApplyAppVo> rb = ResultBean.fireFail();
LoanSettleApply loanSettleApply = fetchBySid(sid);
if (loanSettleApply == null) {
return rb.setMsg("该申请不存在");
}
return null;
}
}

12
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyAppVos.java

@ -0,0 +1,12 @@
package com.yxt.anrui.terminal.api.risk.settleapply;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class SettleApplyAppVos {
}

60
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeign.java

@ -0,0 +1,60 @@
package com.yxt.anrui.terminal.api.risk.settleapply;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDelegateQuery;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDto;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyQuery;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyTaskQuery;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@FeignClient(
contextId = "terminal-SettleApply",
name = "anrui-terminal",
path = "/risk/v1/SettleApply",
fallback = SettleApplyFeignFallback.class)
public interface SettleApplyFeign {
@ApiOperation("办理")
@PutMapping("/agreeSettleApply")
@ResponseBody
ResultBean agreeSettleApply(@RequestBody SettleApplyDto dto);
@ApiOperation("驳回")
@PutMapping("/rejectSettleApply")
@ResponseBody
ResultBean rejectSettleApply(@RequestBody SettleApplyTaskQuery query);
@ApiOperation("撤回")
@PutMapping("/recallSettleApply")
@ResponseBody
ResultBean recallSettleApply(@RequestBody SettleApplyTaskQuery query);
@ApiOperation("终止")
@PutMapping("/stopSettleApply")
@ResponseBody
ResultBean stopSettleApply(@RequestBody SettleApplyTaskQuery query);
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@SpringQueryMap SettleApplyQuery query);
@ApiOperation("详情")
@GetMapping("/getSettleApply/{sid}")
@ResponseBody
ResultBean<SettleApplyAppVos> getSettleApply(@PathVariable("sid") String sid);
@ApiOperation(value = "加签")
@PutMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody SettleApplyDelegateQuery delegateQuery);
}

12
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeignFallback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.terminal.api.risk.settleapply;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Component
public class SettleApplyFeignFallback {
}

25
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDelegateQuery.java

@ -0,0 +1,25 @@
package com.yxt.anrui.terminal.api.risk.settleapply.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class SettleApplyDelegateQuery {
private String userSid;
@ApiModelProperty("流程实例id")
@JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

35
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDto.java

@ -0,0 +1,35 @@
package com.yxt.anrui.terminal.api.risk.settleapply.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class SettleApplyDto {
@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;
}

23
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyQuery.java

@ -0,0 +1,23 @@
package com.yxt.anrui.terminal.api.risk.settleapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class SettleApplyQuery {
@ApiModelProperty(value = "节点key")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
@NotNull(message = "参数错误:next")
private Integer next;
}

45
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyTaskQuery.java

@ -0,0 +1,45 @@
package com.yxt.anrui.terminal.api.risk.settleapply.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Data
public class SettleApplyTaskQuery {
/**
* 终止驳回撤回
*/
@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;
}

62
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyRest.java

@ -0,0 +1,62 @@
package com.yxt.anrui.terminal.biz.risk.settleapply;
import com.yxt.anrui.terminal.api.risk.settleapply.SettleApplyAppVos;
import com.yxt.anrui.terminal.api.risk.settleapply.SettleApplyFeign;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDelegateQuery;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDto;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyQuery;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyTaskQuery;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Controller
@RequestMapping("/risk/v1/SettleApply")
@Api(tags = "结清申请")
public class SettleApplyRest implements SettleApplyFeign {
@Autowired
private SettleApplyService settleApplyService;
@Override
public ResultBean agreeSettleApply(SettleApplyDto dto) {
return settleApplyService.agreeSettleApply(dto);
}
@Override
public ResultBean rejectSettleApply(SettleApplyTaskQuery query) {
return settleApplyService.rejectSettleApply(query);
}
@Override
public ResultBean recallSettleApply(SettleApplyTaskQuery query) {
return settleApplyService.recallSettleApply(query);
}
@Override
public ResultBean stopSettleApply(SettleApplyTaskQuery query) {
return settleApplyService.stopSettleApply(query);
}
@Override
public ResultBean<String> getFlowOperateTitle(SettleApplyQuery query) {
return settleApplyService.getFlowOperateTitle(query);
}
@Override
public ResultBean<SettleApplyAppVos> getSettleApply(String sid) {
return settleApplyService.getSettleApply(sid);
}
@Override
public ResultBean delegate(SettleApplyDelegateQuery delegateQuery) {
return settleApplyService.delegate(delegateQuery);
}
}

130
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyService.java

@ -0,0 +1,130 @@
package com.yxt.anrui.terminal.biz.risk.settleapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.SecondarySalesAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApply;
import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyFeign;
import com.yxt.anrui.riskcenter.api.loansettleapply.SettleApplyAppVo;
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*;
import com.yxt.anrui.terminal.api.base.common.CarModelVo;
import com.yxt.anrui.terminal.api.risk.secondarysales.SecondarySalesAppVos;
import com.yxt.anrui.terminal.api.risk.secondarysales.SecondarySalesCostAppVo;
import com.yxt.anrui.terminal.api.risk.settleapply.SettleApplyAppVos;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDelegateQuery;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDto;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyQuery;
import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyTaskQuery;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/6
**/
@Service
public class SettleApplyService {
@Autowired
private LoanSettleApplyFeign loanSettleApplyFeign;
public ResultBean agreeSettleApply(SettleApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
CompleteLoanSettleApplyDto completeDto = new CompleteLoanSettleApplyDto();
BeanUtil.copyProperties(dto, completeDto);
ResultBean resultBean = loanSettleApplyFeign.complete(completeDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean rejectSettleApply(SettleApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanSettleApplyTaskQuery loanSettleApplyTaskQuery = new LoanSettleApplyTaskQuery();
BeanUtil.copyProperties(query, loanSettleApplyTaskQuery);
ResultBean resultBean = loanSettleApplyFeign.taskReject(loanSettleApplyTaskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean recallSettleApply(SettleApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanSettleApplyTaskQuery loanSettleApplyTaskQuery = new LoanSettleApplyTaskQuery();
BeanUtil.copyProperties(query, loanSettleApplyTaskQuery);
ResultBean resultBean = loanSettleApplyFeign.revokeProcess(loanSettleApplyTaskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean stopSettleApply(SettleApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanSettleApplyTaskQuery loanSettleApplyTaskQuery = new LoanSettleApplyTaskQuery();
BeanUtil.copyProperties(query, loanSettleApplyTaskQuery);
ResultBean resultBean = loanSettleApplyFeign.breakProcess(loanSettleApplyTaskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean<String> getFlowOperateTitle(SettleApplyQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
LoanSettleApplyNodeQuery getNodeQuery = new LoanSettleApplyNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<LoanSettleApplyNodeVo>> getPreviousNodesForReject = loanSettleApplyFeign.getPreviousNodesForReject(getNodeQuery);
if (getPreviousNodesForReject.getSuccess()) {
getPreviousNodesForReject.getData().removeAll(Collections.singleton(null));
data = getPreviousNodesForReject.getData().get(0).getName();
} else {
return rb.setMsg(getPreviousNodesForReject.getMsg());
}
} else if (next == 1) {
ResultBean<List<LoanSettleApplyNodeVo>> getNextNodesForSubmit = loanSettleApplyFeign.getNextNodesForSubmit(getNodeQuery);
if (getNextNodesForSubmit.getSuccess()) {
getNextNodesForSubmit.getData().removeAll(Collections.singleton(null));
data = getNextNodesForSubmit.getData().get(0).getName();
} else {
return rb.setMsg(getNextNodesForSubmit.getMsg());
}
} else {
return rb.setMsg("参数错误:next");
}
return rb.success().setData(data);
}
public ResultBean<SettleApplyAppVos> getSettleApply(String sid) {
ResultBean<SettleApplyAppVos> rb = ResultBean.fireFail();
ResultBean<SettleApplyAppVo> resultBean = loanSettleApplyFeign.getAppDetails(sid);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
SettleApplyAppVos settleApplyAppVos = new SettleApplyAppVos();
BeanUtil.copyProperties(resultBean.getData(), settleApplyAppVos);
return rb.success().setData(settleApplyAppVos);
}
public ResultBean delegate(SettleApplyDelegateQuery delegateQuery) {
ResultBean rb = ResultBean.fireFail();
LoanSettleApplyDelegateQuery delegateQuery1 = new
LoanSettleApplyDelegateQuery();
BeanUtil.copyProperties(delegateQuery, delegateQuery1);
ResultBean delegate = loanSettleApplyFeign.delegate(delegateQuery1);
return rb.success();
}
}

136
doc/databases/risk_center.sql

@ -1724,6 +1724,142 @@ CREATE TABLE `loan_secondary_sales_bidding`
DEFAULT CHARSET = utf8 COMMENT ='二次销售公示竞价';
DROP TABLE IF EXISTS `loan_settle_apply`;
CREATE TABLE `loan_settle_apply`
(
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用',
`state` int(32) DEFAULT '1' COMMENT '状态',
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid',
`createByName` varchar(64) DEFAULT NULL COMMENT '申请人',
`createDept` varchar(64) DEFAULT NULL COMMENT '申请部门',
`createDeptSid` varchar(64) DEFAULT NULL COMMENT '申请部门sid',
`vinNo` varchar(500) DEFAULT NULL COMMENT '车架号',
`vehMark` varchar(64) DEFAULT NULL COMMENT '车牌号',
`busVinSid` varchar(64) DEFAULT NULL COMMENT '销售订单车辆sid',
`saleOrderSid` varchar(64) DEFAULT NULL COMMENT '销售订单sid',
`customerName` varchar(200) DEFAULT NULL COMMENT '客户名称',
`customerSid` varchar(64) DEFAULT NULL COMMENT '客户sid',
`loanName` varchar(200) DEFAULT NULL COMMENT '贷款人',
`loanSid` varchar(200) DEFAULT NULL COMMENT '贷款人sid',
`loanContractNo` varchar(200) DEFAULT NULL COMMENT '贷款合同编号',
`bankName` varchar(200) DEFAULT NULL COMMENT '资方',
`bankContractNo` varchar(200) DEFAULT NULL COMMENT '资方合同编号',
`settingDate` varchar(200) DEFAULT NULL COMMENT '结清日期',
`overdueMonthPrice` decimal(10, 2) DEFAULT NULL COMMENT '公司当前逾期月还',
`currentNotDuePrice` decimal(10, 2) DEFAULT NULL COMMENT '公司当期未到期月还',
`notDuePrice` decimal(10, 2) DEFAULT NULL COMMENT '公司未到期月还',
`useOrgSid` varchar(64) DEFAULT NULL COMMENT '分公司sid',
`useOrgName` varchar(64) DEFAULT NULL COMMENT '分公司名称',
`orgSidPath` text DEFAULT NULL COMMENT '机构全路径sid',
`closeDate` varchar(64) DEFAULT NULL COMMENT '办结日期',
`procInstId` varchar(64) DEFAULT NULL COMMENT '实例id',
`procDefId` varchar(64) DEFAULT NULL COMMENT '流程定义id',
`taskId` varchar(64) DEFAULT NULL COMMENT '任务id',
`taskDefKey` varchar(64) DEFAULT NULL COMMENT '环节id',
`nodeState` varchar(64) DEFAULT NULL COMMENT '流程状态',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='结清申请';
DROP TABLE IF EXISTS `loan_settle_bank_cost`;
CREATE TABLE `loan_settle_bank_cost`
(
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用',
`state` int(32) DEFAULT '1' COMMENT '状态',
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid',
`mainSid` varchar(64) DEFAULT NULL COMMENT '主表sid',
`price` decimal(10, 2) DEFAULT NULL COMMENT '资方逾期月还',
`currentNotDuePrice` decimal(10, 2) DEFAULT NULL COMMENT '资方当期未到期月还',
`notDuePrice` decimal(10, 2) DEFAULT NULL COMMENT '资方未到期金额',
`bankInterest` decimal(10, 2) DEFAULT NULL COMMENT '资方逾期利息',
`bankNominalPrice` decimal(10, 2) DEFAULT NULL COMMENT '资方名义价',
`bankContractLiquidated` decimal(10, 2) DEFAULT NULL COMMENT '资方合同违约金',
`bankOtherReceivable` decimal(10, 2) DEFAULT NULL COMMENT '资方其他应收',
`otherReceivableRemarks` text DEFAULT NULL COMMENT '其他应收说明',
`bankSettlePrice` decimal(10, 2) DEFAULT NULL COMMENT '资方结清金额',
`files` text DEFAULT NULL COMMENT '附件',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='资方结清费用';
DROP TABLE IF EXISTS `loan_settle_company_cost`;
CREATE TABLE `loan_settle_company_cost`
(
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用',
`state` int(32) DEFAULT '1' COMMENT '状态',
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid',
`mainSid` varchar(64) DEFAULT NULL COMMENT '主表sid',
`loanDeposit` decimal(10, 2) DEFAULT NULL COMMENT '贷款保证金',
`overduePrice` decimal(10, 2) DEFAULT NULL COMMENT '公司逾期月还',
`putBankInterest` decimal(10, 2) DEFAULT NULL COMMENT '垫资方逾期利息',
`funfCost` decimal(10, 2) DEFAULT NULL COMMENT '资金占用费',
`bankOverInterest` decimal(10, 2) DEFAULT NULL COMMENT '资方逾期利息',
`companyCurrentNotPrice` decimal(10, 2) DEFAULT NULL COMMENT '公司当期未到期月还',
`bankNotPrice` decimal(10, 2) DEFAULT NULL COMMENT '资方未到期金额',
`deductionAmount` decimal(10, 2) DEFAULT NULL COMMENT '贷款保证金扣罚金额',
`companyNominalPrice` decimal(10, 2) DEFAULT NULL COMMENT '名义价',
`contractLiquidated` decimal(10, 2) DEFAULT NULL COMMENT '合同违约金',
`companyOtherPrice` decimal(10, 2) DEFAULT NULL COMMENT '公司其他费用',
`otherCostRemarks` text DEFAULT NULL COMMENT '其他费用说明',
`settleAll` decimal(10, 2) DEFAULT NULL COMMENT '公司正常结清合计',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='公司结清费用';
DROP TABLE IF EXISTS `loan_settle_company_reduction`;
CREATE TABLE `loan_settle_company_reduction`
(
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用',
`state` int(32) DEFAULT '1' COMMENT '状态',
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid',
`mainSid` varchar(64) DEFAULT NULL COMMENT '主表sid',
`fundPenalty` decimal(10, 2) DEFAULT NULL COMMENT '资金占用费减免',
`depositPenalty` decimal(10, 2) DEFAULT NULL COMMENT '贷款保证金扣罚减免',
`otherCost` decimal(10, 2) DEFAULT NULL COMMENT '其他费用减免',
`amountTo` decimal(10, 2) DEFAULT NULL COMMENT '公司减免后结清合计',
`profit` decimal(10, 2) DEFAULT NULL COMMENT '结清利润',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='公司结清费用减免情况';

Loading…
Cancel
Save