Quellcode durchsuchen

供应链 生成订单

home vor 2 Jahren
Ursprung
Commit
d7339e522a

+ 7 - 0
hx-common/library-supply/src/main/java/com/fjhx/service/ApplyPurchaseService.java

@@ -111,4 +111,11 @@ public interface ApplyPurchaseService extends BaseService<ApplyPurchase> {
      */
     void discardApplyPurchase(Long applyPurchaseId);
 
+    /**
+     * 验证订单是否完成
+     *
+     * @param orderId 订单id
+     * @return 订单是否完成
+     */
+    boolean orderIsComplete(Long orderId);
 }

+ 25 - 3
hx-common/library-supply/src/main/java/com/fjhx/service/OrderService.java

@@ -17,7 +17,7 @@ import java.util.List;
 public interface OrderService extends BaseService<Order> {
 
     /**
-     * 创建订单/发起订单流程
+     * 创建订单/发起订单
      *
      * @param supplierId        供应商id
      * @param applyPurchaseList 申购列表
@@ -26,7 +26,7 @@ public interface OrderService extends BaseService<Order> {
     void createOrder(Long supplierId, List<ApplyPurchase> applyPurchaseList, String code);
 
     /**
-     * 创建订单/发起订单流程(指定前缀自动生成申购)
+     * 创建订单/发起订单(指定前缀自动生成申购)
      *
      * @param supplierId        供应商id
      * @param applyPurchaseList 申购列表
@@ -35,11 +35,33 @@ public interface OrderService extends BaseService<Order> {
     void createOrderAuth(Long supplierId, List<ApplyPurchase> applyPurchaseList, String codePrefix);
 
     /**
-     * 创建订单/发起订单流程(默认前缀自动生成申购)
+     * 创建订单/发起订单(默认前缀自动生成申购)
      *
      * @param supplierId        供应商id
      * @param applyPurchaseList 申购列表
      */
     void createOrderAuth(Long supplierId, List<ApplyPurchase> applyPurchaseList);
 
+    /**
+     * 采购订单审批未通过
+     *
+     * @param orderId 订单id
+     */
+    void flowNotPass(Long orderId);
+
+    /**
+     * 采购订单审批通过
+     *
+     * @param orderId 订单id
+     */
+    void flowPass(Long orderId);
+
+    /**
+     * 订单是否完成,如果完成,自动修改状态为完成
+     *
+     * @param orderId 订单id
+     * @return 订单是否完成
+     */
+    boolean orderComplete(Long orderId);
+
 }

+ 25 - 7
hx-common/library-supply/src/main/java/com/fjhx/service/impl/ApplyPurchaseServiceImpl.java

@@ -13,6 +13,7 @@ import com.fjhx.enums.ApplyPurchaseStatusEnum;
 import com.fjhx.mapper.ApplyPurchaseMapper;
 import com.fjhx.service.ApplyPurchaseService;
 import com.fjhx.service.OrderFlowService;
+import com.fjhx.service.OrderService;
 import com.fjhx.utils.Assert;
 import org.springblade.core.redis.lock.RedisLockClient;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -42,6 +43,9 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
     @Autowired
     private OrderFlowService orderFlowService;
 
+    @Autowired
+    private OrderService orderService;
+
     @Override
     public void add(ApplyPurchase applyPurchase) {
         Assert.notEmpty(applyPurchase.getGoodsId(), "物品id不能为空");
@@ -57,6 +61,9 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
         // 状态
         applyPurchase.setStatus(ApplyPurchaseStatusEnum.WAIT_START.getValue());
 
+        // 申购单未完成
+        applyPurchase.setCompleteStatus(StatusConstant.No);
+
         save(applyPurchase);
     }
 
@@ -135,7 +142,7 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
         update(Wrappers.<ApplyPurchase>lambdaUpdate()
                 .eq(ApplyPurchase::getOrderId, orderId)
                 .set(ApplyPurchase::getStatus, ApplyPurchaseStatusEnum.PURCHASED.getValue())
-                .set(BaseEntity::getCreateTime, new Date())
+                .set(BaseEntity::getUpdateTime, new Date())
                 .set(BaseEntity::getUpdateUser, AuthUtil.getUserId())
         );
     }
@@ -152,7 +159,7 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
                 .set(ApplyPurchase::getApplyPrice, null)
                 .set(ApplyPurchase::getUnitPrice, null)
                 .set(ApplyPurchase::getRemark, null)
-                .set(BaseEntity::getCreateTime, new Date())
+                .set(BaseEntity::getUpdateTime, new Date())
                 .set(BaseEntity::getUpdateUser, AuthUtil.getUserId())
         );
     }
@@ -185,9 +192,9 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
 
         Assert.eqTrue(b, ErrorMsgConstant.SYSTEM_BUSY_ERROR);
 
-        // TODO 完成订单
+        // 如果完成订单,修改订单状态为已完成
         if (totalArrivalQuantity.compareTo(quantity) >= 0 && autoComplete) {
-
+            orderService.orderComplete(applyPurchase.getOrderId());
         }
 
     }
@@ -196,7 +203,7 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
     public void endApplyPurchase(Long applyPurchaseId) {
         update(Wrappers.<ApplyPurchase>lambdaUpdate()
                 .eq(ApplyPurchase::getId, applyPurchaseId)
-                .set(BaseEntity::getCreateTime, new Date())
+                .set(BaseEntity::getUpdateTime, new Date())
                 .set(BaseEntity::getUpdateUser, AuthUtil.getUserId())
                 .set(ApplyPurchase::getCompleteStatus, StatusConstant.YES));
     }
@@ -205,12 +212,23 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
     public void discardApplyPurchase(Long applyPurchaseId) {
         update(Wrappers.<ApplyPurchase>lambdaUpdate()
                 .eq(ApplyPurchase::getId, applyPurchaseId)
-                .set(BaseEntity::getCreateTime, new Date())
+                .set(BaseEntity::getUpdateTime, new Date())
                 .set(BaseEntity::getUpdateUser, AuthUtil.getUserId())
                 .set(ApplyPurchase::getStatus, ApplyPurchaseStatusEnum.DISCARD.getValue())
         );
     }
 
+    @Override
+    public boolean orderIsComplete(Long orderId) {
+
+        int count = count(Wrappers.<ApplyPurchase>lambdaQuery()
+                .eq(ApplyPurchase::getOrderId, orderId)
+                .eq(ApplyPurchase::getCompleteStatus, StatusConstant.No)
+        );
+
+        return count == 0;
+    }
+
     /**
      * 发起申购
      *
@@ -273,7 +291,7 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
     private void updateFlowStatus(Long flowLinkNo, ApplyPurchaseStatusEnum applyPurchaseStatusEnum) {
         update(Wrappers.<ApplyPurchase>lambdaUpdate()
                 .eq(ApplyPurchase::getFlowLinkNo, flowLinkNo)
-                .set(BaseEntity::getCreateTime, new Date())
+                .set(BaseEntity::getUpdateTime, new Date())
                 .set(BaseEntity::getUpdateUser, AuthUtil.getUserId())
                 .set(ApplyPurchase::getStatus, applyPurchaseStatusEnum.getValue()));
     }

+ 45 - 1
hx-common/library-supply/src/main/java/com/fjhx/service/impl/OrderServiceImpl.java

@@ -19,6 +19,7 @@ import org.springblade.core.redis.lock.RedisLockClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.Date;
@@ -66,6 +67,32 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         createOrderFun(supplierId, applyPurchaseList, () -> createOrderCode(codePrefix));
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void flowNotPass(Long orderId) {
+        updateStatus(orderId, OrderStatusEnum.NOT_PASS);
+        applyPurchaseService.flowOrderNotPass(orderId);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void flowPass(Long orderId) {
+        updateStatus(orderId, OrderStatusEnum.PASS);
+        applyPurchaseService.flowOrderPass(orderId);
+    }
+
+    @Override
+    public boolean orderComplete(Long orderId) {
+
+        boolean b = applyPurchaseService.orderIsComplete(orderId);
+
+        if (b) {
+            updateStatus(orderId, OrderStatusEnum.COMPLETED);
+        }
+
+        return b;
+    }
+
     /**
      * 生成订单
      *
@@ -107,7 +134,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         StringBuilder builder = new StringBuilder();
         builder.append(codePrefix);
 
-        Order order = getOne(Wrappers.<Order>lambdaQuery().select(Order::getCode).eq(BaseEntity::getTenantId, AuthUtil.getTenantId()).likeRight(Order::getCode, codePrefix).orderByDesc(Order::getCode).last("limit 1"));
+        Order order = getOne(Wrappers.<Order>lambdaQuery()
+                .select(Order::getCode)
+                .eq(BaseEntity::getTenantId, AuthUtil.getTenantId())
+                .likeRight(Order::getCode, codePrefix)
+                .orderByDesc(Order::getCode)
+                .last("limit 1"));
 
         if (order == null) {
             return builder.append("001").toString();
@@ -118,4 +150,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return builder.append(codeNum < 9 ? "00" : codeNum < 99 ? "0" : "").append(codeNum + 1).toString();
     }
 
+    /**
+     * 修改订单状态
+     */
+    private void updateStatus(Long orderId, OrderStatusEnum orderStatusEnum) {
+        update(Wrappers.<Order>lambdaUpdate()
+                .eq(BaseEntity::getId, orderId)
+                .set(Order::getStatus, orderStatusEnum.getValue())
+                .set(BaseEntity::getUpdateUser, AuthUtil.getUserId())
+                .set(BaseEntity::getUpdateTime, new Date())
+        );
+    }
+
 }