DisbursementController.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.loan.system.controller.wechat;
  2. import com.loan.system.context.BaseContext;
  3. import com.loan.system.domain.dto.DisbursementDTO;
  4. import com.loan.system.domain.dto.DisbursementRecordDTO;
  5. import com.loan.system.domain.dto.DocumentDTO;
  6. import com.loan.system.domain.entity.ContractSeq;
  7. import com.loan.system.domain.entity.Disbursement;
  8. import com.loan.system.domain.enums.BusinessAttrEnum;
  9. import com.loan.system.domain.enums.StepEnum;
  10. import com.loan.system.domain.enums.StepPropertyEnum;
  11. import com.loan.system.domain.pojo.Result;
  12. import com.loan.system.domain.vo.ContractVO;
  13. import com.loan.system.domain.vo.DisbursementVO;
  14. import com.loan.system.domain.vo.StepVO;
  15. import com.loan.system.service.*;
  16. import com.loan.system.utils.ResultUtil;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.security.access.prepost.PreAuthorize;
  21. import org.springframework.util.ObjectUtils;
  22. import org.springframework.web.bind.annotation.*;
  23. import java.time.LocalDateTime;
  24. import java.time.format.DateTimeFormatter;
  25. import java.util.List;
  26. @RestController
  27. @RequestMapping("/wechat/disbursement")
  28. @Api(tags = "出款接口")
  29. public class DisbursementController {
  30. @Autowired
  31. private DisbursementService disbursementService;
  32. @Autowired
  33. private StepService stepService;
  34. @Autowired
  35. private LoanService loanService;
  36. @Autowired
  37. private DocumentService documentService;
  38. @Autowired
  39. private ContractService contractService;
  40. @Autowired
  41. private ContractSeqService contractSeqService;
  42. @GetMapping("/{caseId}/details")
  43. @ApiOperation("显示业务详情")//与loanContraller的方法一致,但为了规范
  44. public Result findLoanCaseDetails(@PathVariable("caseId")Long caseId){
  45. return ResultUtil.success("success",loanService.findLoanCaseDetailsById(caseId));
  46. }
  47. @GetMapping("/{caseId}/details2")
  48. @ApiOperation("显示出款计划详情")
  49. public Result findDisbursementDetails(@PathVariable("caseId")Long caseId){
  50. return ResultUtil.success("success",disbursementService.findDisbursementDetailsById(caseId));
  51. }
  52. @PostMapping
  53. @ApiOperation(value = "上报出款计划")
  54. public Result addDisbursement(@RequestBody DisbursementDTO disbursementDTO) {
  55. //上报计划
  56. DisbursementVO disbursementVO = disbursementService.addDisbursement(disbursementDTO);
  57. //修改状态
  58. stepService.updateUserByCaseId(StepPropertyEnum.PLAN_REPORT.getLabel(), BaseContext.getCurrentId(), disbursementDTO.getCaseId());
  59. stepService.updateStatusByCaseId(StepPropertyEnum.PLAN_REPORT.getLabel(), StepEnum.COMPLETED.getMsg(), disbursementDTO.getCaseId());
  60. stepService.updateStatusByCaseId(StepPropertyEnum.PLAN_AUDIT.getLabel(), StepEnum.PROCESS.getMsg(),disbursementDTO.getCaseId());
  61. return ResultUtil.success("success",disbursementVO);
  62. }
  63. //上传文件UploadController
  64. //显示文件列表
  65. @GetMapping("/{caseId}/files")
  66. @ApiOperation("显示文件列表")
  67. public Result findByCaseId(@PathVariable("caseId")Long caseId){
  68. return ResultUtil.success("success",documentService.findByCaseId(caseId));
  69. }
  70. @PutMapping("/commit")
  71. @ApiOperation(value = "出款启动")
  72. @PreAuthorize("@pms.hasRole(RoleEnum.LEAD_SALES.getMsg())")
  73. public Result commitDisbursement(@RequestBody DocumentDTO documentDTO) {
  74. //修改状态
  75. stepService.updateUserByCaseId(StepPropertyEnum.DISBURSE_START.getLabel(), BaseContext.getCurrentId(), documentDTO.getCaseId());
  76. stepService.updateStatusByCaseId(StepPropertyEnum.DISBURSE_START.getLabel(), StepEnum.COMPLETED.getMsg(),documentDTO.getCaseId());
  77. stepService.updateStatusByCaseId(StepPropertyEnum.DISBURSE_AUDIT.getLabel(), StepEnum.PROCESS.getMsg(), documentDTO.getCaseId());
  78. return ResultUtil.success("success");
  79. }
  80. @PostMapping("/{id}/amount")
  81. @ApiOperation(value = "财务出款")
  82. public Result disbursement(@RequestBody DisbursementRecordDTO disbursementRecordDTO) {
  83. //添加出款记录
  84. //修改状态
  85. // stepService.updateUserByCaseId(StepPropertyEnum.FINANCE_DISBURSE.getLabel(), BaseContext.getCurrentId(), disbursementDTO.getCaseId());
  86. // stepService.updateStatusByCaseId(StepPropertyEnum.FINANCE_DISBURSE.getLabel(), StepEnum.COMPLETED.getMsg(),disbursementDTO.getCaseId());
  87. // stepService.updateStatusByCaseId(StepPropertyEnum.DISBURSE_CONFIRM.getLabel(), StepEnum.PROCESS.getMsg(), disbursementDTO.getCaseId());
  88. return ResultUtil.success("success");
  89. }
  90. @PostMapping("/confirm")
  91. @ApiOperation(value = "业务确认")
  92. public Result confirmDisbursement(@RequestBody DisbursementDTO disbursementDTO) {
  93. //修改状态
  94. stepService.updateUserByCaseId(StepPropertyEnum.DISBURSE_CONFIRM.getLabel(), BaseContext.getCurrentId(), disbursementDTO.getCaseId());
  95. stepService.updateStatusByCaseId(StepPropertyEnum.DISBURSE_CONFIRM.getLabel(), StepEnum.COMPLETED.getMsg(),disbursementDTO.getCaseId());
  96. //填写合同编号
  97. List<ContractVO> contractByCaseId = contractService.findContractByCaseId(disbursementDTO.getCaseId());
  98. String today = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
  99. contractByCaseId.forEach(contractVO -> {
  100. String prefix= contractVO.getBusinessAttr().equals(BusinessAttrEnum.ESTATE_MORTGAGE.getMsg()) ? "宝押字": "宝质字";
  101. ContractSeq contractSeq = contractSeqService.findSeqBySeqDataAndBusinessAttr(today,prefix);
  102. if (ObjectUtils.isEmpty(contractSeq))
  103. contractSeq =contractSeqService.addSeq(today,prefix);
  104. //合同编号
  105. String contractNo = String.format("%s%s-%s-%03d",
  106. prefix,
  107. today.substring(0, 4), // 年份
  108. today.substring(4), // 月日
  109. contractSeq.getNextSeq());
  110. //更新号码
  111. contractSeqService.updateSeqById(contractSeq.getId(),contractSeq.getNextSeq()+1);
  112. //更新合同编号
  113. contractService.updateContractNoById(contractVO.getId(),contractNo);
  114. });
  115. return ResultUtil.success("success");
  116. }
  117. }