SampleFlow.java 4.5 KB

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