SubscribeFlow.java 3.4 KB

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