OrderFlow.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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.ProductionWorkOrderService;
  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 ProductionWorkOrderService productionWorkOrderService;
  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. OrderInfoDto dto = submitData.toJavaObject(OrderInfoDto.class);
  54. orderService.edit(dto);
  55. // 查询委外订单是否存在包材
  56. Boolean isExist = orderService.isExistOrderSkuBom(businessId);
  57. orderService.update(q -> q
  58. .eq(BaseIdPo::getId, businessId)
  59. .set(OrderInfo::getFlowStatus, FlowStatusEnum.PASS.getKey())
  60. // 委外订单不存在包材则直接修改为生产中
  61. .set(OrderInfo::getStatus, !isExist ? OrderStatusEnum.IN_PRODUCTION.getKey() : OrderStatusEnum.STOCK_PREPARATION.getKey())
  62. .set(BasePo::getUpdateTime, new Date())
  63. .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
  64. );
  65. if (!isExist) {
  66. // 生成生产任务和工单
  67. productionWorkOrderService.add(businessId);
  68. }
  69. orderFlowExampleService.update(q -> q.eq(OrderFlowExample::getOrderId, businessId)
  70. .eq(OrderFlowExample::getFlowId, flowId)
  71. .set(OrderFlowExample::getFlowStatus, FlowStatusEnum.PASS.getKey())
  72. .set(BasePo::getUpdateTime, new Date())
  73. .set(BasePo::getUpdateUser, SecurityUtils.getUserId()));
  74. }
  75. @Override
  76. public void returnToOriginator(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
  77. orderService.update(q -> q
  78. .eq(BaseIdPo::getId, businessId)
  79. .set(OrderInfo::getFlowStatus, flowStatus.getKey())
  80. .set(BasePo::getUpdateTime, new Date())
  81. .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
  82. );
  83. orderFlowExampleService.update(q -> q.eq(OrderFlowExample::getOrderId, businessId)
  84. .eq(OrderFlowExample::getFlowId, flowId)
  85. .set(OrderFlowExample::getFlowStatus, flowStatus.getKey())
  86. .set(BasePo::getUpdateTime, new Date())
  87. .set(BasePo::getUpdateUser, SecurityUtils.getUserId()));
  88. }
  89. @Override
  90. public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
  91. OrderInfoDto dto = submitData.toJavaObject(OrderInfoDto.class);
  92. dto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
  93. orderService.edit(dto);
  94. orderFlowExampleService.update(q -> q.eq(OrderFlowExample::getOrderId, businessId)
  95. .eq(OrderFlowExample::getFlowId, flowId)
  96. .set(OrderFlowExample::getFlowStatus, FlowStatusEnum.IN_PROGRESS.getKey())
  97. .set(BasePo::getUpdateTime, new Date())
  98. .set(BasePo::getUpdateUser, SecurityUtils.getUserId()));
  99. }
  100. @Override
  101. public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
  102. returnToOriginator(flowId, businessId, flowStatus);
  103. }
  104. @Override
  105. public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
  106. returnToOriginator(flowId, businessId, flowStatus);
  107. }
  108. }