SubscribeFlow.java 3.7 KB

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