chao 3 lat temu
rodzic
commit
d782ecd601

+ 30 - 0
src/main/java/com/caimei365/order/controller/ShipApi.java

@@ -1,6 +1,7 @@
 package com.caimei365.order.controller;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.LogisticsBatchDto;
 import com.caimei365.order.model.dto.LogisticsDto;
 import com.caimei365.order.model.vo.CompanyVo;
 import com.caimei365.order.model.vo.ShopOrderVo;
@@ -142,4 +143,33 @@ public class ShipApi {
         return shipService.getLogisticsInfo(shopOrderId, logisticsBatchId);
     }
 
+    /**
+     * 删除物流信息
+     */
+    @ApiOperation("删除物流信息(旧:/supplier/logisticsInfo/delete)")
+    @ApiImplicitParam(required = true, name = "logisticsInfoId", value = "发货物流信息Id")
+    @GetMapping("/ship/logistics/delete")
+    public ResponseJson<Void> deleteLogisticsInfo(Integer logisticsBatchId) {
+        if (null == logisticsBatchId) {
+            return ResponseJson.error("发货物流信息Id不能为空!", null);
+        }
+        return shipService.deleteLogisticsInfo(logisticsBatchId);
+    }
+
+    /**
+     * 供应商撤销发货
+     *
+     * @param logisticsBatchDto {
+     *                              logisticsBatchId: 发货批次表Id
+     *                          }
+     */
+    @ApiOperation("发货(旧:/supplier/cancelShipment)")
+    @PostMapping("/ship/delivery/cancel")
+    public ResponseJson<Void> cancelDelivery(LogisticsBatchDto logisticsBatchDto) {
+        if (null == logisticsBatchDto.getLogisticsBatchId()) {
+            return ResponseJson.error("发货批次表Id不能为空!", null);
+        }
+        return shipService.cancelDelivery(logisticsBatchDto.getLogisticsBatchId());
+    }
+
 }

+ 20 - 0
src/main/java/com/caimei365/order/mapper/ShipMapper.java

@@ -95,4 +95,24 @@ public interface ShipMapper {
      * @param logisticsBatchId 发货物流批次Id
      */
     LogisticsBatchVo getLogisticsBatchById(Integer logisticsBatchId);
+    /**
+     * 删除物流信息
+     * @param logisticsInfoId 物流信息Id
+     */
+    void deleteLogisticsInfoByInfoId(Integer logisticsInfoId);
+    /**
+     * 删除物流批次
+     * @param logisticsBatchId 发货物流批次Id
+     */
+    void deleteLogisticsBatchByBatchId(Integer logisticsBatchId);
+    /**
+     * 删除物流记录
+     * @param logisticsBatchId 发货物流批次Id
+     */
+    void deleteLogisticsRecordByBatchId(Integer logisticsBatchId);
+    /**
+     * 删除物流信息
+     * @param logisticsBatchId 发货物流批次Id
+     */
+    void deleteLogisticsInfoByBatchId(Integer logisticsBatchId);
 }

+ 22 - 0
src/main/java/com/caimei365/order/model/dto/LogisticsBatchDto.java

@@ -0,0 +1,22 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/9
+ */
+@Data
+public class LogisticsBatchDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 发货批次表Id
+     */
+    @ApiModelProperty("发货批次表Id")
+    private Integer logisticsBatchId;
+}

+ 10 - 0
src/main/java/com/caimei365/order/service/ShipService.java

@@ -68,4 +68,14 @@ public interface ShipService {
      * @param logisticsBatchId  发货物流批次Id
      */
     ResponseJson<Map<String, Object>> getLogisticsInfo(Integer shopOrderId, Integer logisticsBatchId);
+    /**
+     * 删除物流信息
+     * @param logisticsInfoId  发货物流信息Id
+     */
+    ResponseJson<Void> deleteLogisticsInfo(Integer logisticsInfoId);
+    /**
+     * 供应商撤销发货
+     * @param logisticsBatchId 发货物流批次Id
+     */
+    ResponseJson<Void> cancelDelivery(Integer logisticsBatchId);
 }

+ 77 - 2
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -283,10 +283,18 @@ public class ShipServiceImpl implements ShipService {
         }
         shopOrder.setSplitFlag(0);
         shipMapper.updateShopOrderShip(shopOrder.getShopOrderId(), shopOrder.getOutStoreNum(), shopOrder.getOutStoreTimes(), shopOrder.getSendOutStatus());
-
         /*
          * 修改主订单发货状态
          */
+        setMainOrderStatus(shopOrder);
+        return ResponseJson.success(logisticsBatch.getId());
+    }
+
+    /**
+     * 修改主订单发货状态
+     * @param shopOrder 子订单
+     */
+    private void setMainOrderStatus(ShopOrderVo shopOrder) {
         OrderVo order = orderCommonMapper.getOrderByOrderId(shopOrder.getOrderId());
         // 主订单发货状态
         Integer sendOutStatus = order.getSendOutStatus();
@@ -326,7 +334,6 @@ public class ShipServiceImpl implements ShipService {
                 log.info("发货短信推送失败,orderId>>>>" + order.getOrderId());
             }
         }
-        return ResponseJson.success(logisticsBatch.getId());
     }
 
     /**
@@ -387,6 +394,10 @@ public class ShipServiceImpl implements ShipService {
         return ResponseJson.success(map);
     }
 
+    /**
+     *  设置 已发,已退,已取消发货数量
+     * @param recordVo 发货记录
+     */
     private void setLogisticsRecordNum(LogisticsRecordVo recordVo) {
         OrderProductVo orderProduct = shipMapper.getOrderProductById(recordVo.getOrderProductId());
         recordVo.setBuyNum(orderProduct.getNum() + orderProduct.getPresentNum());
@@ -453,5 +464,69 @@ public class ShipServiceImpl implements ShipService {
         return ResponseJson.success(map);
     }
 
+    /**
+     * 删除物流信息
+     *
+     * @param logisticsInfoId 发货物流信息Id
+     */
+    @Override
+    public ResponseJson<Void> deleteLogisticsInfo(Integer logisticsInfoId) {
+        shipMapper.deleteLogisticsInfoByInfoId(logisticsInfoId);
+        return ResponseJson.success(null);
+    }
+
+    /**
+     * 供应商撤销发货
+     *
+     * @param logisticsBatchId 发货物流批次Id
+     */
+    @Override
+    public ResponseJson<Void> cancelDelivery(Integer logisticsBatchId) {
+        // 发货物流批次
+        LogisticsBatchVo logisticsBatch = shipMapper.getLogisticsBatchById(logisticsBatchId);
+        if (null == logisticsBatch) {
+            return ResponseJson.error("物流异常,logisticsBatchID:" + logisticsBatchId, null);
+        }
+        // 获取发货物流记录
+        List<LogisticsRecordVo> recordList = orderCommonMapper.getLogisticsRecord(logisticsBatch.getShopOrderId(), logisticsBatch.getId());
+        // 本批次发货数量
+        int num = 0;
+        for (LogisticsRecordVo logisticsRecord : recordList) {
+            num += logisticsRecord.getNum();
+            // 订单商品修改
+            OrderProductVo orderProduct = shipMapper.getOrderProductById(logisticsRecord.getOrderProductId());
+            int notOutStore = orderProduct.getNotOutStore() + logisticsRecord.getNum();
+            // 保存订单商品未出库数量
+            shipMapper.updateNotOutStore(orderProduct.getOrderProductId(), notOutStore);
+        }
+        ShopOrderVo shopOrder = shipMapper.getShopOrder(logisticsBatch.getShopOrderId());
+        if (null == shopOrder) {
+            return ResponseJson.error("订单异常,shopOrderId:" + logisticsBatch.getShopOrderId(), null);
+        }
+        // 子订单修改
+        int outStoreNum = shopOrder.getOutStoreNum() - num;
+        shopOrder.setOutStoreNum(outStoreNum);
+        int productNum = shopOrder.getPresentNum() + shopOrder.getItemCount();
+        if (productNum > shopOrder.getOutStoreNum() && shopOrder.getOutStoreNum() > 0) {
+            shopOrder.setSendOutStatus(2);
+        } else if (productNum == shopOrder.getOutStoreNum()) {
+            shopOrder.setSendOutStatus(3);
+        } else if (shopOrder.getOutStoreNum() == 0) {
+            shopOrder.setSendOutStatus(1);
+        } else {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return ResponseJson.error("发货数量异常", null);
+        }
+        // 修改子订单
+        shipMapper.updateShopOrderShip(shopOrder.getShopOrderId(), shopOrder.getOutStoreNum(), shopOrder.getOutStoreTimes(), shopOrder.getSendOutStatus());
+        // 修改主订单发货状态
+        setMainOrderStatus(shopOrder);
+        // 撤销发货
+        shipMapper.deleteLogisticsBatchByBatchId(logisticsBatchId);
+        shipMapper.deleteLogisticsRecordByBatchId(logisticsBatchId);
+        shipMapper.deleteLogisticsInfoByBatchId(logisticsBatchId);
+        return ResponseJson.success(null);
+    }
+
 
 }

+ 12 - 0
src/main/resources/mapper/ShipMapper.xml

@@ -27,6 +27,18 @@
         UPDATE cm_order SET  sendOutStatus = #{sendOutStatus}, status = #{status}
         WHERE orderID = #{orderId}
     </update>
+    <delete id="deleteLogisticsInfoByInfoId">
+        DELETE FROM logistics_information WHERE id = #{logisticsInfoId}
+    </delete>
+    <delete id="deleteLogisticsBatchByBatchId">
+        DELETE FROM cm_logistics_batch WHERE id = #{logisticsBatchId}
+    </delete>
+    <delete id="deleteLogisticsRecordByBatchId">
+        DELETE FROM cm_logistics_record WHERE logisticsBatchID = #{logisticsBatchId}
+    </delete>
+    <delete id="deleteLogisticsInfoByBatchId">
+        DELETE FROM logistics_information WHERE logisticsBatchID = #{logisticsBatchId}
+    </delete>
     <select id="getShopOrderList" resultType="com.caimei365.order.model.vo.ShopOrderVo">
         SELECT
             shopOrderId,