Browse Source

订单流程

24282 1 năm trước cách đây
mục cha
commit
81b7aab0f5

+ 86 - 0
sd-business/src/main/java/com/sd/business/flow/OrderFlow.java

@@ -0,0 +1,86 @@
+package com.sd.business.flow;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.flow.enums.FlowStatusEnum;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.sd.business.entity.order.dto.OrderInfoDto;
+import com.sd.business.entity.order.po.OrderInfo;
+import com.sd.business.service.order.OrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ * 发起采购流程
+ */
+@Service
+public class OrderFlow extends FlowDelegate {
+
+    @Autowired
+    private OrderService orderService;
+
+    @Override
+    public String getFlowKey() {
+        return "order";
+    }
+
+    @Override
+    public Long start(Long flowId, JSONObject submitData) {
+
+        OrderInfoDto dto = submitData.toJavaObject(OrderInfoDto.class);
+        dto.setFlowId(flowId);
+        dto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
+
+        if (dto.getId() == null) {
+            orderService.add(dto);
+        } else {
+            orderService.edit(dto);
+        }
+
+        return dto.getId();
+    }
+
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+
+        orderService.update(q -> q
+                .eq(BaseIdPo::getId, businessId)
+                .set(OrderInfo::getFlowStatus, (FlowStatusEnum.PASS.getKey()))
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+
+    }
+
+    @Override
+    public void returnToOriginator(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        orderService.update(q -> q
+                .eq(BaseIdPo::getId, businessId)
+                .set(OrderInfo::getFlowStatus, flowStatus.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+    }
+
+    @Override
+    public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
+        OrderInfoDto dto = submitData.toJavaObject(OrderInfoDto.class);
+        dto.setFlowStatus(FlowStatusEnum.IN_PROGRESS.getKey());
+        orderService.edit(dto);
+    }
+
+    @Override
+    public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        returnToOriginator(flowId, businessId, flowStatus);
+    }
+
+    @Override
+    public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
+        returnToOriginator(flowId, businessId, flowStatus);
+    }
+
+}

+ 8 - 4
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -219,12 +219,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
         List<OrderSku> tempOrderSkuList = orderSkuList.stream()
                 .peek(item -> item.setOrderId(orderDto.getId()))
                 .peek(item -> item.setStockPreparationStatus(StatusConstant.NO))
-                .peek(item -> ObsFileUtil.saveFile(
-                        Collections.singletonList(item.getSelfAdhesiveStickerFile()), orderDto.getId()))
                 .map(item -> (OrderSku) item)
                 .collect(Collectors.toList());
         orderSkuService.saveBatch(tempOrderSkuList);
 
+        for (OrderSkuDto item : orderSkuList) {
+            ObsFileUtil.saveFile(Collections.singletonList(item.getSelfAdhesiveStickerFile()), item.getId());
+        }
+
         List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
                 .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
                         .peek(orderSkuBom -> orderSkuBom.setOrderId(orderDto.getId()))
@@ -250,12 +252,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
         List<OrderSku> tempOrderSkuList = orderSkuList.stream()
                 .peek(item -> item.setOrderId(orderDto.getId()))
                 .peek(item -> item.setStockPreparationStatus(StatusConstant.NO))
-                .peek(item -> ObsFileUtil.saveFile(
-                        Collections.singletonList(item.getSelfAdhesiveStickerFile()), orderDto.getId()))
                 .map(item -> (OrderSku) item)
                 .collect(Collectors.toList());
         orderSkuService.editLinked(tempOrderSkuList, OrderSku::getOrderId, orderDto.getId());
 
+        for (OrderSkuDto item : orderSkuList) {
+            ObsFileUtil.saveFile(Collections.singletonList(item.getSelfAdhesiveStickerFile()), item.getId());
+        }
+
         List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
                 .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
                         .peek(orderSkuBom -> orderSkuBom.setOrderId(orderDto.getId()))

+ 2 - 2
sd-wln/src/main/java/com/sd/wln/service/impl/OrderHandleServiceImpl.java

@@ -1,6 +1,7 @@
 package com.sd.wln.service.impl;
 
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.ruoyi.common.annotation.LogicIgnore;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.exception.ServiceException;
@@ -14,7 +15,6 @@ import com.sd.wln.util.WlnUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collections;
 import java.util.Objects;
@@ -29,7 +29,7 @@ public class OrderHandleServiceImpl implements OrderHandleService {
     @Autowired
     private WlnOrderService wlnOrderService;
 
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     @LogicIgnore
     @Override
     public synchronized void resynchronization(ResynchronizationDto dto) {