OrderFlow.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.sd.business.flow;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.fjhx.flow.core.FlowDelegate;
  4. import com.fjhx.flow.enums.FlowStatusEnum;
  5. import com.ruoyi.common.core.domain.BaseIdPo;
  6. import com.ruoyi.common.core.domain.BasePo;
  7. import com.ruoyi.common.utils.SecurityUtils;
  8. import com.sd.business.entity.order.dto.OrderFlowExampleDto;
  9. import com.sd.business.entity.order.dto.OrderInfoDto;
  10. import com.sd.business.entity.order.enums.OrderStatusEnum;
  11. import com.sd.business.entity.order.po.OrderFlowExample;
  12. import com.sd.business.entity.order.po.OrderInfo;
  13. import com.sd.business.service.order.OrderFlowExampleService;
  14. import com.sd.business.service.order.OrderService;
  15. import com.sd.business.service.production.ProductionTaskService;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import java.util.Date;
  19. /**
  20. * 发起采购流程
  21. */
  22. @Service
  23. public class OrderFlow extends FlowDelegate {
  24. @Autowired
  25. private OrderService orderService;
  26. @Autowired
  27. private OrderFlowExampleService orderFlowExampleService;
  28. @Autowired
  29. private ProductionTaskService productionTaskService;
  30. @Override
  31. public String getFlowKey() {
  32. return "order";
  33. }
  34. @Override
  35. public Long start(Long flowId, JSONObject submitData) {
  36. OrderInfoDto dto = submitData.toJavaObject(OrderInfoDto.class);
  37. dto.setFlowId(flowId);
  38. dto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
  39. if (dto.getId() == null) {
  40. orderService.add(dto);
  41. } else {
  42. orderService.edit(dto);
  43. }
  44. OrderFlowExampleDto orderFlowExample = new OrderFlowExampleDto();
  45. orderFlowExample.setOrderId(dto.getId());
  46. orderFlowExample.setFlowId(flowId);
  47. orderFlowExample.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
  48. orderFlowExampleService.add(orderFlowExample);
  49. return dto.getId();
  50. }
  51. @Override
  52. public void end(Long flowId, Long businessId, JSONObject submitData) {
  53. // 查询委外订单是否存在包材
  54. Boolean isExist = orderService.isExistOrderSkuBom(businessId);
  55. orderService.update(q -> q
  56. .eq(BaseIdPo::getId, businessId)
  57. .set(OrderInfo::getFlowStatus, FlowStatusEnum.PASS.getKey())
  58. // 委外订单不存在包材则直接修改为生产中
  59. .set(OrderInfo::getStatus, !isExist ? OrderStatusEnum.IN_PRODUCTION.getKey() : OrderStatusEnum.STOCK_PREPARATION.getKey())
  60. .set(BasePo::getUpdateTime, new Date())
  61. .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
  62. );
  63. if (!isExist) {
  64. // 生成生产任务和工单
  65. productionTaskService.addTaskAndWorkOrder(businessId);
  66. }
  67. orderFlowExampleService.update(q -> q.eq(OrderFlowExample::getOrderId, businessId)
  68. .eq(OrderFlowExample::getFlowId, flowId)
  69. .set(OrderFlowExample::getFlowStatus, FlowStatusEnum.PASS.getKey())
  70. .set(BasePo::getUpdateTime, new Date())
  71. .set(BasePo::getUpdateUser, SecurityUtils.getUserId()));
  72. }
  73. @Override
  74. public void returnToOriginator(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
  75. orderService.update(q -> q
  76. .eq(BaseIdPo::getId, businessId)
  77. .set(OrderInfo::getFlowStatus, flowStatus.getKey())
  78. .set(BasePo::getUpdateTime, new Date())
  79. .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
  80. );
  81. orderFlowExampleService.update(q -> q.eq(OrderFlowExample::getOrderId, businessId)
  82. .eq(OrderFlowExample::getFlowId, flowId)
  83. .set(OrderFlowExample::getFlowStatus, flowStatus.getKey())
  84. .set(BasePo::getUpdateTime, new Date())
  85. .set(BasePo::getUpdateUser, SecurityUtils.getUserId()));
  86. }
  87. @Override
  88. public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
  89. OrderInfoDto dto = submitData.toJavaObject(OrderInfoDto.class);
  90. dto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
  91. orderService.edit(dto);
  92. orderFlowExampleService.update(q -> q.eq(OrderFlowExample::getOrderId, businessId)
  93. .eq(OrderFlowExample::getFlowId, flowId)
  94. .set(OrderFlowExample::getFlowStatus, FlowStatusEnum.IN_PROGRESS.getKey())
  95. .set(BasePo::getUpdateTime, new Date())
  96. .set(BasePo::getUpdateUser, SecurityUtils.getUserId()));
  97. }
  98. @Override
  99. public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
  100. returnToOriginator(flowId, businessId, flowStatus);
  101. }
  102. @Override
  103. public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
  104. returnToOriginator(flowId, businessId, flowStatus);
  105. }
  106. }