ApplyFlow.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package com.sd.business.flow;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.toolkit.IdWorker;
  4. import com.fjhx.flow.core.FlowDelegate;
  5. import com.fjhx.flow.core.FlowThreadLocalUtil;
  6. import com.fjhx.flow.enums.FlowStatusEnum;
  7. import com.fjhx.flow.enums.HandleTypeEnum;
  8. import com.ruoyi.common.core.domain.BaseIdPo;
  9. import com.ruoyi.common.core.domain.BasePo;
  10. import com.ruoyi.common.utils.SecurityUtils;
  11. import com.sd.business.entity.apply.dto.ApplyBuyDto;
  12. import com.sd.business.entity.apply.po.ApplyBuy;
  13. import com.sd.business.entity.apply.po.ApplyBuyBom;
  14. import com.sd.business.service.apply.ApplyBuyBomService;
  15. import com.sd.business.service.apply.ApplyBuyService;
  16. import com.sd.business.util.CodeEnum;
  17. import com.sd.framework.util.Assert;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import java.math.BigDecimal;
  21. import java.util.Date;
  22. import java.util.List;
  23. /**
  24. * 发起申购流程
  25. */
  26. @Service
  27. public class ApplyFlow extends FlowDelegate {
  28. @Autowired
  29. private ApplyBuyService applyBuyService;
  30. @Autowired
  31. private ApplyBuyBomService applyBuyBomService;
  32. @Override
  33. public String getFlowKey() {
  34. return "apply_buy";
  35. }
  36. @Override
  37. public Long start(Long flowId, JSONObject submitData) {
  38. ApplyBuyDto applyBuyDto = submitData.toJavaObject(ApplyBuyDto.class);
  39. validated(applyBuyDto);
  40. Long applyBuyId = IdWorker.getId();
  41. applyBuyDto.setId(applyBuyId);
  42. applyBuyDto.setCode(CodeEnum.APPLY_BUY_CODE.getCode());
  43. applyBuyDto.setFlowId(flowId);
  44. applyBuyDto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
  45. List<ApplyBuyBom> applyBuyBomList = applyBuyDto.getApplyBuyBomList();
  46. for (ApplyBuyBom applyBuyBom : applyBuyBomList) {
  47. applyBuyBom.setApplyBuyId(applyBuyId);
  48. applyBuyBom.setPurchaseQuantity(BigDecimal.ZERO);
  49. }
  50. applyBuyService.save(applyBuyDto);
  51. applyBuyBomService.saveBatch(applyBuyBomList);
  52. return applyBuyId;
  53. }
  54. @Override
  55. public void end(Long flowId, Long businessId, JSONObject submitData) {
  56. applyBuyService.update(q -> q
  57. .eq(BaseIdPo::getId, businessId)
  58. .set(ApplyBuy::getFlowStatus, FlowStatusEnum.PASS.getKey())
  59. .set(BasePo::getUpdateTime, new Date())
  60. .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
  61. );
  62. }
  63. public void jump() {
  64. // 如果是驳回,修改状态为驳回
  65. if (HandleTypeEnum.REJECT.equals(FlowThreadLocalUtil.getHandleTypeEnum())) {
  66. applyBuyService.update(q -> q
  67. .eq(BaseIdPo::getId, FlowThreadLocalUtil.getBusinessId())
  68. .set(ApplyBuy::getFlowStatus, FlowStatusEnum.REJECT.getKey())
  69. .set(BasePo::getUpdateTime, new Date())
  70. .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
  71. );
  72. }
  73. }
  74. /**
  75. * 验证数据
  76. */
  77. private void validated(ApplyBuyDto applyBuyDto) {
  78. Assert.notBlank(applyBuyDto.getApplyName(), "申购人不能为空");
  79. Assert.notEmpty(applyBuyDto.getApplyTime(), "申购时间不能为空");
  80. List<ApplyBuyBom> applyBuyBomList = applyBuyDto.getApplyBuyBomList();
  81. Assert.notEmpty(applyBuyBomList, "申购清单不能为空");
  82. for (ApplyBuyBom applyBuyBom : applyBuyBomList) {
  83. Assert.notNull(applyBuyBom.getBomSpecId(), "bomId不能为空");
  84. Assert.notNull(applyBuyBom.getQuantity(), "申购数量不能为空");
  85. Assert.gtZero(applyBuyBom.getQuantity(), "申购数量必须大于0");
  86. }
  87. }
  88. }