AccountRequestFundsFlow.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.fjhx.account.flow;
  2. import cn.hutool.extra.spring.SpringUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.dynamic.datasource.annotation.DS;
  5. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  6. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  7. import com.fjhx.account.entity.account.dto.AccountPaymentDto;
  8. import com.fjhx.account.entity.account.dto.AccountRequestFundsDto;
  9. import com.fjhx.account.entity.account.enums.AccountRequestFundsStatusEnum;
  10. import com.fjhx.account.entity.account.enums.PaymentStatusEnum;
  11. import com.fjhx.account.entity.account.enums.PaymentTypeEnum;
  12. import com.fjhx.account.entity.account.po.AccountRequestFunds;
  13. import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
  14. import com.fjhx.account.service.account.AccountPaymentService;
  15. import com.fjhx.account.service.account.AccountRequestFundsDetailService;
  16. import com.fjhx.account.service.account.AccountRequestFundsService;
  17. import com.fjhx.common.constant.SourceConstant;
  18. import com.fjhx.file.utils.ObsFileUtil;
  19. import com.fjhx.flow.core.FlowDelegate;
  20. import com.obs.services.internal.ServiceException;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Component;
  23. import java.util.List;
  24. /**
  25. * 请款流程
  26. * @Author:caozj
  27. * @DATE:2023/4/3 17:38
  28. */
  29. @DS(SourceConstant.ACCOUNT)
  30. @Component
  31. public class AccountRequestFundsFlow extends FlowDelegate {
  32. @Autowired
  33. private AccountPaymentService accountPaymentService;
  34. @Override
  35. public String getFlowKey() {
  36. return "account_request_funds_flow";
  37. }
  38. /**
  39. * 发起流程
  40. * @param flowId 流程ID
  41. * @param submitData 请款表信息
  42. * @return
  43. */
  44. @Override
  45. public Long start(Long flowId, JSONObject submitData) {
  46. // DynamicDataSourceContextHolder.push(SourceConstant.ACCOUNT);
  47. AccountRequestFundsService accountRequestFundsService = SpringUtil.getBean(AccountRequestFundsService.class);
  48. AccountRequestFundsDetailService accountRequestFundsDetailService = SpringUtil.getBean(AccountRequestFundsDetailService.class);
  49. AccountRequestFundsDto accountRequestFundsDto = submitData.toJavaObject( AccountRequestFundsDto.class);
  50. accountRequestFundsDto.setStatus(AccountRequestFundsStatusEnum.UNDER_REVIEW.getKey());
  51. //添加请款表的信息
  52. accountRequestFundsService.save(accountRequestFundsDto);
  53. //获取请款详情表的详细信息
  54. List<AccountRequestFundsDetail> accountRequestFundsDetailList = accountRequestFundsDto.getAccountRequestFundsDetailList();
  55. if(CollectionUtils.isNotEmpty(accountRequestFundsDetailList)){
  56. accountRequestFundsDetailList.forEach(accountRequestFundsDetail -> accountRequestFundsDetail
  57. .setAccountRequestFundsId(accountRequestFundsDto.getId()));
  58. //添加请款详情表的信息
  59. accountRequestFundsDetailService.saveBatch(accountRequestFundsDetailList);
  60. }
  61. //添加附件信息
  62. ObsFileUtil.saveFile(accountRequestFundsDto.getFileList(),accountRequestFundsDto.getId());
  63. return accountRequestFundsDto.getId();
  64. }
  65. /**
  66. * 结束流程
  67. * @param flowId 流程ID
  68. * @param businessId 业务ID
  69. * @param submitData 请款表信息
  70. */
  71. @Override
  72. public void end(Long flowId, Long businessId, JSONObject submitData) {
  73. AccountRequestFundsService accountRequestFundsService = SpringUtil.getBean(AccountRequestFundsService.class);
  74. //通过业务ID查询申购数据
  75. AccountRequestFunds accountRequestFunds = accountRequestFundsService.getById(businessId);
  76. AccountRequestFundsDto accountRequestFundsDto = submitData.toJavaObject( AccountRequestFundsDto.class);
  77. if(ObjectUtils.isEmpty(accountRequestFunds)){
  78. throw new ServiceException("请款表的数据不存在");
  79. }
  80. //修改申购状态为审批通过
  81. accountRequestFunds.setStatus(AccountRequestFundsStatusEnum.PASS.getKey());
  82. accountRequestFundsService.updateById(accountRequestFunds);
  83. //添加打款的数据
  84. addPayment(accountRequestFundsDto);
  85. }
  86. /**
  87. * 添加打款表的数据
  88. */
  89. private void addPayment(AccountRequestFundsDto accountRequestFundsDto){
  90. AccountPaymentDto accountPayment = new AccountPaymentDto();
  91. accountPayment.setBusinessId(accountRequestFundsDto.getId());
  92. accountPayment.setType(PaymentTypeEnum.UNDER_REVIEW.getKey());
  93. accountPayment.setStatus(PaymentStatusEnum.UNDER_REVIEW.getKey());
  94. accountPayment.setPaymentTime(accountPayment.getPaymentTime());
  95. accountPayment.setPaymentRemark(accountRequestFundsDto.getPaymentRemarks());
  96. accountPayment.setDepartmentId(accountRequestFundsDto.getDepartmentId());
  97. accountPayment.setCorporationId(accountRequestFundsDto.getCorporationId());
  98. accountPayment.setPaymentMethod(accountRequestFundsDto.getPaymentMethod());
  99. accountPayment.setIncomeAmount(accountRequestFundsDto.getTotal());
  100. accountPayment.setAmount(accountRequestFundsDto.getTotal());
  101. accountPayment.setName(accountRequestFundsDto.getName());
  102. accountPayment.setBusinessManagementId(accountRequestFundsDto.getAccountManagementId());
  103. accountPayment.setOpeningBank(accountRequestFundsDto.getOpeningBank());
  104. accountPayment.setBusinessCurrency(accountPayment.getCurrency());
  105. accountPayment.setAccountOpening(accountRequestFundsDto.getAccountOpening());
  106. accountPayment.setInterbankNumber(accountPayment.getInterbankNumber());
  107. accountPaymentService.save(accountPayment);
  108. }
  109. }