SubscribeFlow.java 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.fjhx.purchase.flow;
  2. import cn.hutool.extra.spring.SpringUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  5. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.fjhx.flow.core.FlowDelegate;
  8. import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
  9. import com.fjhx.purchase.entity.subscribe.enums.SubscribeStatusEnum;
  10. import com.fjhx.purchase.entity.subscribe.po.Subscribe;
  11. import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
  12. import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
  13. import com.fjhx.purchase.service.subscribe.SubscribeService;
  14. import com.fjhx.purchase.util.code.CodeEnum;
  15. import com.obs.services.internal.ServiceException;
  16. import io.seata.spring.annotation.GlobalTransactional;
  17. import org.springframework.stereotype.Component;
  18. import java.util.Date;
  19. import java.util.List;
  20. /**
  21. * @Author:caozj
  22. * @DATE:2023/4/3 17:38
  23. */
  24. @Component
  25. public class SubscribeFlow extends FlowDelegate {
  26. @Override
  27. public String getFlowKey() {
  28. return "subscribe_flow";
  29. }
  30. /**
  31. * 发起流程
  32. * @param flowId 流程ID
  33. * @param submitData 申购数据
  34. * @return
  35. */
  36. @Override
  37. public Long start(Long flowId, JSONObject submitData) {
  38. SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
  39. SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
  40. Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
  41. subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
  42. subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
  43. subscribeService.save(subscribe);
  44. List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
  45. if(CollectionUtils.isNotEmpty(SubscribeDetails)){
  46. for(SubscribeDetail s : SubscribeDetails){
  47. s.setSubscribeId(subscribe.getId());
  48. }
  49. subscribeDetailService.saveBatch(subscribe.getSubscribeDetailList());
  50. }
  51. return subscribe.getId();
  52. }
  53. /**
  54. * 结束流程
  55. * @param flowId 流程ID
  56. * @param businessId 业务ID
  57. * @param submitData 数据
  58. */
  59. @Override
  60. public void end(Long flowId, Long businessId, JSONObject submitData) {
  61. SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
  62. SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
  63. //通过业务ID查询申购数据
  64. Subscribe subscribe = subscribeService.getById(businessId);
  65. if(ObjectUtils.isEmpty(subscribe)){
  66. throw new ServiceException("申购单不存在");
  67. }
  68. //修改申购状态为审批通过
  69. subscribe.setSubcribeStatus(SubscribeStatusEnum.PASS.getKey());
  70. subscribe.setApprovedDate(new Date());
  71. subscribeService.updateById(subscribe);
  72. //修改申购明细为待采购
  73. SubscribeDetail detail = new SubscribeDetail();
  74. detail.setStatus(SubscribeDetailStatusEnum.PAID_AMOUNT.getKey());
  75. subscribeDetailService.update(detail,Wrappers.<SubscribeDetail>query()
  76. .lambda().eq(SubscribeDetail::getSubscribeId,subscribe.getId()));
  77. }
  78. }