SampleFlow.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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.area.utils.CustomizeAreaUtil;
  10. import com.fjhx.common.constant.SourceConstant;
  11. import com.fjhx.common.enums.CodingRuleEnum;
  12. import com.fjhx.common.enums.FlowStatusEnum1;
  13. import com.fjhx.common.service.coding.CodingRuleService;
  14. import com.fjhx.file.utils.ObsFileUtil;
  15. import com.fjhx.flow.core.FlowDelegate;
  16. import com.fjhx.sale.entity.sample.dto.SampleDto;
  17. import com.fjhx.sale.entity.sample.po.Sample;
  18. import com.fjhx.sale.entity.sample.po.SampleProduct;
  19. import com.fjhx.sale.entity.sample.po.SampleProject;
  20. import com.fjhx.sale.entity.sample.po.SampleShipment;
  21. import com.fjhx.sale.service.sample.SampleProductService;
  22. import com.fjhx.sale.service.sample.SampleProjectService;
  23. import com.fjhx.sale.service.sample.SampleService;
  24. import com.fjhx.sale.service.sample.SampleShipmentService;
  25. import com.ruoyi.common.exception.ServiceException;
  26. import com.ruoyi.common.utils.SecurityUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Component;
  29. import java.util.Date;
  30. import java.util.List;
  31. /**
  32. * 样品单流程
  33. * @Author:caozj
  34. * @DATE:2023/4/3 17:38
  35. */
  36. @Component
  37. @DS(SourceConstant.SALE)
  38. public class SampleFlow extends FlowDelegate {
  39. @Autowired
  40. private CodingRuleService codingRuleService;
  41. @Autowired
  42. private SampleService sampleService;
  43. @Autowired
  44. private SampleProductService sampleProductService;
  45. @Autowired
  46. private SampleProjectService sampleProjectService;
  47. @Autowired
  48. private SampleShipmentService sampleShipmentService;
  49. @Override
  50. public String getFlowKey() {
  51. return "sample_flow";
  52. }
  53. /**
  54. * 发起流程
  55. * @param flowId 流程ID
  56. * @param submitData 采购付款数据
  57. * @return
  58. */
  59. @Override
  60. @DSTransactional
  61. public Long start(Long flowId, JSONObject submitData) {
  62. // SampleService sampleService = SpringUtil.getBean(SampleService.class);
  63. // SampleProductService sampleProductService = SpringUtil.getBean(SampleProductService.class);
  64. // SampleProjectService sampleProjectService = SpringUtil.getBean(SampleProjectService.class);
  65. // SampleShipmentService sampleShipmentService = SpringUtil.getBean(SampleShipmentService.class);
  66. // Sample sample = submitData.toJavaObject(Sample.class);
  67. SampleDto sample = submitData.toJavaObject(SampleDto.class);
  68. sample.setCode(codingRuleService.createCode(CodingRuleEnum.SAMPLE.getKey(),sample.getBuyCorporationId()));
  69. long id = start(sample);
  70. return id;
  71. }
  72. public Long start(SampleDto sample){
  73. //赋值城市省份信息
  74. CustomizeAreaUtil.setAreaId(sample);
  75. sample.setBuyCityId(sample.getCityId());
  76. sample.setBuyCountryId(sample.getCountryId());
  77. sample.setBuyProvinceId(sample.getProvinceId());
  78. // sample.setCode(CodeEnum.SAMPLE_CODE.getCode());
  79. sample.setStatus(FlowStatusEnum1.UNDER_REVIEW.getKey());
  80. sample.setUserName(SecurityUtils.getUsername());
  81. sampleService.save(sample);
  82. List<SampleProduct> sampleProductList = sample.getSampleProductList();
  83. if(CollectionUtils.isNotEmpty(sampleProductList)){//保存样品单产品
  84. for(SampleProduct c : sampleProductList){
  85. c.setId(IdWorker.getId());
  86. c.setSampleId(sample.getId());
  87. c.setExpendQuantity(c.getQuantity());
  88. ObsFileUtil.saveFile(c.getFileList(),c.getId());
  89. }
  90. sampleProductService.saveBatch(sampleProductList);
  91. }
  92. List<SampleProject> sampleProjectList = sample.getSampleProjectList();
  93. if(CollectionUtils.isNotEmpty(sampleProjectList)){//保存收费项目
  94. for(SampleProject c : sampleProjectList){
  95. c.setSampleId(sample.getId());
  96. }
  97. sampleProjectService.saveBatch(sampleProjectList);
  98. }
  99. List<SampleShipment> sampleShipmentList = sample.getSampleShipmentList();
  100. if(CollectionUtils.isNotEmpty(sampleShipmentList)){//保存自定义出货
  101. for(SampleShipment c : sampleShipmentList){
  102. c.setSampleId(sample.getId());
  103. }
  104. sampleShipmentService.saveBatch(sampleShipmentList);
  105. }
  106. //交接单附件
  107. ObsFileUtil.saveFile(sample.getFileList(),sample.getId(),1);
  108. //包装附件
  109. ObsFileUtil.saveFile(sample.getPackageFileList(),sample.getId(),2);
  110. return sample.getId();
  111. }
  112. /**
  113. * 结束流程
  114. * @param flowId 流程ID
  115. * @param businessId 业务ID
  116. * @param submitData 数据
  117. */
  118. @Override
  119. public void end(Long flowId, Long businessId, JSONObject submitData) {
  120. SampleService sampleService = SpringUtil.getBean(SampleService.class);
  121. //通过业务ID查询样品单数据
  122. Sample sample = sampleService.getById(businessId);
  123. if(ObjectUtils.isEmpty(sample)){
  124. throw new ServiceException("样品单不存在");
  125. }
  126. //修改样品单状态为审批通过
  127. sample.setStatus(FlowStatusEnum1.PASS.getKey());
  128. sample.setApprovedDate(new Date());
  129. sampleService.updateById(sample);
  130. }
  131. }