SampleFlow.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. @Override
  42. public String getFlowKey() {
  43. return "sample_flow";
  44. }
  45. /**
  46. * 发起流程
  47. * @param flowId 流程ID
  48. * @param submitData 采购付款数据
  49. * @return
  50. */
  51. @Override
  52. @DSTransactional
  53. public Long start(Long flowId, JSONObject submitData) {
  54. SampleService sampleService = SpringUtil.getBean(SampleService.class);
  55. SampleProductService sampleProductService = SpringUtil.getBean(SampleProductService.class);
  56. SampleProjectService sampleProjectService = SpringUtil.getBean(SampleProjectService.class);
  57. SampleShipmentService sampleShipmentService = SpringUtil.getBean(SampleShipmentService.class);
  58. // Sample sample = submitData.toJavaObject(Sample.class);
  59. SampleDto sample = submitData.toJavaObject(SampleDto.class);
  60. //赋值城市省份信息
  61. CustomizeAreaUtil.setAreaId(sample);
  62. sample.setBuyCityId(sample.getCityId());
  63. sample.setBuyCountryId(sample.getCountryId());
  64. sample.setBuyProvinceId(sample.getProvinceId());
  65. // sample.setCode(CodeEnum.SAMPLE_CODE.getCode());
  66. sample.setCode(codingRuleService.createCode(CodingRuleEnum.SAMPLE.getKey(),sample.getBuyCorporationId()));
  67. sample.setStatus(FlowStatusEnum1.UNDER_REVIEW.getKey());
  68. sample.setUserName(SecurityUtils.getUsername());
  69. sampleService.save(sample);
  70. List<SampleProduct> sampleProductList = sample.getSampleProductList();
  71. if(CollectionUtils.isNotEmpty(sampleProductList)){//保存样品单产品
  72. for(SampleProduct c : sampleProductList){
  73. c.setId(IdWorker.getId());
  74. c.setSampleId(sample.getId());
  75. c.setExpendQuantity(c.getQuantity());
  76. ObsFileUtil.saveFile(c.getFileList(),c.getId());
  77. }
  78. sampleProductService.saveBatch(sampleProductList);
  79. }
  80. List<SampleProject> sampleProjectList = sample.getSampleProjectList();
  81. if(CollectionUtils.isNotEmpty(sampleProjectList)){//保存收费项目
  82. for(SampleProject c : sampleProjectList){
  83. c.setSampleId(sample.getId());
  84. }
  85. sampleProjectService.saveBatch(sampleProjectList);
  86. }
  87. List<SampleShipment> sampleShipmentList = sample.getSampleShipmentList();
  88. if(CollectionUtils.isNotEmpty(sampleShipmentList)){//保存自定义出货
  89. for(SampleShipment c : sampleShipmentList){
  90. c.setSampleId(sample.getId());
  91. }
  92. sampleShipmentService.saveBatch(sampleShipmentList);
  93. }
  94. //交接单附件
  95. ObsFileUtil.saveFile(sample.getFileList(),sample.getId(),1);
  96. //包装附件
  97. ObsFileUtil.saveFile(sample.getPackageFileList(),sample.getId(),2);
  98. return sample.getId();
  99. }
  100. /**
  101. * 结束流程
  102. * @param flowId 流程ID
  103. * @param businessId 业务ID
  104. * @param submitData 数据
  105. */
  106. @Override
  107. public void end(Long flowId, Long businessId, JSONObject submitData) {
  108. SampleService sampleService = SpringUtil.getBean(SampleService.class);
  109. //通过业务ID查询样品单数据
  110. Sample sample = sampleService.getById(businessId);
  111. if(ObjectUtils.isEmpty(sample)){
  112. throw new ServiceException("样品单不存在");
  113. }
  114. //修改样品单状态为审批通过
  115. sample.setStatus(FlowStatusEnum1.PASS.getKey());
  116. sample.setApprovedDate(new Date());
  117. sampleService.updateById(sample);
  118. }
  119. @Override
  120. public void defaultMethod(Long flowId, Long businessId, com.fjhx.flow.enums.FlowStatusEnum flowStatusEnum, JSONObject submitData) {
  121. }
  122. }