SampleFlow.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.fjhx.ehsd.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.dynamic.datasource.annotation.DSTransactional;
  6. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  7. import com.baomidou.mybatisplus.core.toolkit.IdWorker;
  8. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  9. import com.fjhx.common.constant.SourceConstant;
  10. import com.fjhx.common.enums.FlowStatusEnum;
  11. import com.fjhx.ehsd.entity.sample.po.Sample;
  12. import com.fjhx.ehsd.entity.sample.po.SampleProduct;
  13. import com.fjhx.ehsd.entity.sample.po.SampleProject;
  14. import com.fjhx.ehsd.entity.sample.po.SampleShipment;
  15. import com.fjhx.ehsd.service.sample.SampleProductService;
  16. import com.fjhx.ehsd.service.sample.SampleProjectService;
  17. import com.fjhx.ehsd.service.sample.SampleService;
  18. import com.fjhx.ehsd.service.sample.SampleShipmentService;
  19. import com.fjhx.file.utils.ObsFileUtil;
  20. import com.fjhx.flow.core.FlowDelegate;
  21. import com.fjhx.ehsd.util.code.CodeEnum;
  22. import com.obs.services.internal.ServiceException;
  23. import org.springframework.stereotype.Component;
  24. import java.util.Date;
  25. import java.util.List;
  26. /**
  27. * 样品单流程
  28. * @Author:caozj
  29. * @DATE:2023/4/3 17:38
  30. */
  31. @Component
  32. @DS(SourceConstant.EHSD)
  33. public class SampleFlow extends FlowDelegate {
  34. @Override
  35. public String getFlowKey() {
  36. return "sample_flow";
  37. }
  38. /**
  39. * 发起流程
  40. * @param flowId 流程ID
  41. * @param submitData 采购付款数据
  42. * @return
  43. */
  44. @Override
  45. @DSTransactional
  46. public Long start(Long flowId, JSONObject submitData) {
  47. SampleService sampleService = SpringUtil.getBean(SampleService.class);
  48. SampleProductService sampleProductService = SpringUtil.getBean(SampleProductService.class);
  49. SampleProjectService sampleProjectService = SpringUtil.getBean(SampleProjectService.class);
  50. SampleShipmentService sampleShipmentService = SpringUtil.getBean(SampleShipmentService.class);
  51. Sample sample = submitData.toJavaObject(Sample.class);
  52. sample.setCode(CodeEnum.SAMPLE_CODE.getCode());
  53. sample.setStatus(FlowStatusEnum.UNDER_REVIEW.getKey());
  54. sampleService.save(sample);
  55. List<SampleProduct> sampleProductList = sample.getSampleProductList();
  56. if(CollectionUtils.isNotEmpty(sampleProductList)){//保存样品单产品
  57. for(SampleProduct c : sampleProductList){
  58. c.setId(IdWorker.getId());
  59. c.setSampleId(sample.getId());
  60. c.setExpendQuantity(c.getQuantity());
  61. ObsFileUtil.saveFile(c.getFileList(),c.getId());
  62. }
  63. sampleProductService.saveBatch(sampleProductList);
  64. }
  65. List<SampleProject> sampleProjectList = sample.getSampleProjectList();
  66. if(CollectionUtils.isNotEmpty(sampleProjectList)){//保存收费项目
  67. for(SampleProject c : sampleProjectList){
  68. c.setSampleId(sample.getId());
  69. }
  70. sampleProjectService.saveBatch(sampleProjectList);
  71. }
  72. List<SampleShipment> sampleShipmentList = sample.getSampleShipmentList();
  73. if(CollectionUtils.isNotEmpty(sampleShipmentList)){//保存自定义出货
  74. for(SampleShipment c : sampleShipmentList){
  75. c.setSampleId(sample.getId());
  76. }
  77. sampleShipmentService.saveBatch(sampleShipmentList);
  78. }
  79. return sample.getId();
  80. }
  81. /**
  82. * 结束流程
  83. * @param flowId 流程ID
  84. * @param businessId 业务ID
  85. * @param submitData 数据
  86. */
  87. @Override
  88. public void end(Long flowId, Long businessId, JSONObject submitData) {
  89. SampleService sampleService = SpringUtil.getBean(SampleService.class);
  90. //通过业务ID查询样品单数据
  91. Sample sample = sampleService.getById(businessId);
  92. if(ObjectUtils.isEmpty(sample)){
  93. throw new ServiceException("样品单不存在");
  94. }
  95. //修改样品单状态为审批通过
  96. sample.setStatus(FlowStatusEnum.PASS.getKey());
  97. sample.setApprovedDate(new Date());
  98. sampleService.updateById(sample);
  99. }
  100. }