SubscribeFlowByWdly.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package com.fjhx.purchase.flow;
  2. import cn.hutool.core.util.ObjectUtil;
  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.fjhx.common.constant.SourceConstant;
  7. import com.fjhx.common.enums.CodingRuleEnum;
  8. import com.fjhx.common.service.coding.CodingRuleService;
  9. import com.fjhx.flow.core.FlowDelegate;
  10. import com.fjhx.flow.core.FlowThreadLocalUtil;
  11. import com.fjhx.purchase.entity.subscribe.enums.SubscribeStatusEnum;
  12. import com.fjhx.purchase.entity.subscribe.po.Subscribe;
  13. import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
  14. import com.fjhx.purchase.service.WdlyService;
  15. import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
  16. import com.fjhx.purchase.service.subscribe.SubscribeService;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Component;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. import java.util.Objects;
  22. import java.util.stream.Collectors;
  23. /**
  24. * @Author:yzc
  25. * @DATE:2023/4/20 19:16
  26. */
  27. @DS(SourceConstant.PURCHASE)
  28. @Component
  29. public class SubscribeFlowByWdly extends FlowDelegate {
  30. @Autowired
  31. private CodingRuleService codingRuleService;
  32. @Autowired
  33. private SubscribeFlow subscribeFlow;
  34. @Autowired
  35. private SubscribeService subscribeService;
  36. @Autowired
  37. private SubscribeDetailService subscribeDetailService;
  38. @Autowired
  39. private WdlyService wdlyService;
  40. @Override
  41. public String getFlowKey() {
  42. return "wdly_apply_purchase";
  43. }
  44. /**
  45. * 发起流程
  46. *
  47. * @param flowId 流程ID
  48. * @param submitData 申购数据
  49. * @return
  50. */
  51. @Override
  52. public Long start(Long flowId, JSONObject submitData) {
  53. Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
  54. // subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
  55. subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(), null));
  56. subscribe.setProcessInstanceId("wdly_apply_purchase");
  57. subscribe.setFlowId(flowId);
  58. subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
  59. subscribeService.save(subscribe);
  60. List<SubscribeDetail> subscribeDetails = subscribe.getSubscribeDetailList();
  61. if (ObjectUtil.isEmpty(subscribeDetails)) {
  62. subscribeDetails = new ArrayList<>();
  63. }
  64. for (SubscribeDetail s : subscribeDetails) {
  65. s.setSubscribeId(subscribe.getId());
  66. }
  67. subscribeDetailService.saveBatch(subscribeDetails);
  68. //获取多货id列表
  69. List<Long> ids = subscribeDetails.stream().map(SubscribeDetail::getExcessGoodsDetailsId).filter(Objects::nonNull).collect(Collectors.toList());
  70. wdlyService.toSubscribe(ids);
  71. return subscribe.getId();
  72. }
  73. /**
  74. * 结束流程
  75. *
  76. * @param flowId 流程ID
  77. * @param businessId 业务ID
  78. * @param submitData 数据
  79. */
  80. @Override
  81. public void end(Long flowId, Long businessId, JSONObject submitData) {
  82. subscribeFlow.end(flowId, businessId, submitData);
  83. }
  84. /**
  85. * 重新发起编辑方法
  86. */
  87. public void reStart() {
  88. //获取提交的数据
  89. JSONObject submitData = FlowThreadLocalUtil.getCurrentData();
  90. //编辑申购信息
  91. Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
  92. subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
  93. subscribeService.updateById(subscribe);
  94. //编辑申购明细
  95. List<SubscribeDetail> subscribeDetails = subscribe.getSubscribeDetailList();
  96. if (CollectionUtils.isNotEmpty(subscribeDetails)) {
  97. //更新明细列表信息
  98. subscribeDetails.forEach(item -> item.setSubscribeId(subscribe.getId()));
  99. subscribeDetailService.editLinked(subscribeDetails, SubscribeDetail::getSubscribeId, subscribe.getId());
  100. }
  101. }
  102. }