소스 검색

供应商发货记录

chao 3 년 전
부모
커밋
0fde4296ad

+ 20 - 2
src/main/java/com/caimei365/order/controller/ShipApi.java

@@ -11,6 +11,7 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 供应商发货API
@@ -89,7 +90,7 @@ public class ShipApi {
      *                     }
      */
     @ApiOperation("发货(旧:/supplier/addLogistics)")
-    @PostMapping("/addLogistics")
+    @PostMapping("/ship/delivery")
     public ResponseJson<Integer> addLogistics(LogisticsDto logisticsDto) {
         if (null == logisticsDto.getLogistics()) {
             return ResponseJson.error("物流信息不能为空!", null);
@@ -103,7 +104,24 @@ public class ShipApi {
         return shipService.addLogistics(logisticsDto);
     }
 
-
+    /**
+     * 供应商发货记录
+     */
+    @ApiOperation("供应商发货记录(旧:/supplier/shipmentsRecord)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "shopOrderId", value = "子订单Id"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/ship/delivery/record")
+    public ResponseJson<Map<String, Object>> getDeliveryRecord(Integer shopOrderId,
+                                                               @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                               @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        if (null == shopOrderId) {
+            return ResponseJson.error("子订单Id不能为空!", null);
+        }
+        return shipService.getDeliveryRecord(shopOrderId, pageNum, pageSize);
+    }
 
 
 

+ 0 - 19
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -54,17 +54,14 @@ public interface OrderClubMapper {
     void updateOrderStatus(OrderPo order);
     /**
      * 取消 余额收支记录
-     * @param balanceRecord
      */
     void cancelBalanceRecord(BalanceRecordPo balanceRecord);
     /**
      * 取消 订单
-     * @param order
      */
     void cancelMainOrder(OrderPo order);
     /**
      * 逻辑删除主订单
-     * @param order
      */
     void deleteMainOrder(OrderPo order);
     /**
@@ -142,28 +139,12 @@ public interface OrderClubMapper {
      * @param clauseId 条款Id
      */
     ClauseVo getClauseById(Integer clauseId);
-    /**
-     * 获取物流批次列表
-     * @param orderId 订单Id
-     */
-    List<LogisticsBatchVo> getLogisticsBatchList(Integer orderId);
     /**
      * 获取物流批次子订单Id列表
      * @param orderId 订单Id
      * @param id 物流批次Id
      */
     List<String> getBatchShopOrderIds(Integer orderId, Integer id);
-    /**
-     * 获取发货物流记录
-     * @param shopOrderId      子订单Id
-     * @param logisticsBatchId 物流批次Id
-     */
-    List<LogisticsRecordVo> getLogisticsRecord(Integer shopOrderId, Integer logisticsBatchId);
-    /**
-     * 获取物流信息
-     * @param logisticsBatchId 物流批次Id
-     */
-    List<LogisticsInformationVo> getLogisticsInfoList(Integer logisticsBatchId);
     /**
      * 获取数据库已有分享码
      * @param orderId 订单Id

+ 16 - 0
src/main/java/com/caimei365/order/mapper/OrderCommonMapper.java

@@ -105,4 +105,20 @@ public interface OrderCommonMapper {
      * 根据订单Id获取子订单列表
      */
     List<ShopOrderVo> getShopOrderListByOrderId(Integer orderId);
+    /**
+     * 获取物流批次列表
+     * @param orderId 订单Id
+     */
+    List<LogisticsBatchVo> getLogisticsBatchList(Integer orderId);
+    /**
+     * 获取发货物流记录
+     * @param shopOrderId      子订单Id
+     * @param logisticsBatchId 物流批次Id
+     */
+    List<LogisticsRecordVo> getLogisticsRecord(Integer shopOrderId, Integer logisticsBatchId);
+    /**
+     * 获取物流信息
+     * @param logisticsBatchId 物流批次Id
+     */
+    List<LogisticsInformationVo> getLogisticsInfoList(Integer logisticsBatchId);
 }

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

@@ -88,4 +88,9 @@ public interface ShipMapper {
      * @param status 订单状态
      */
     void updateOrderShip(Integer orderId, Integer sendOutStatus, Integer status);
+    /**
+     * 获取订单Id
+     * @param shopOrderId 子订单Id
+     */
+    Integer getOrderIdByShopOrder(Integer shopOrderId);
 }

+ 9 - 1
src/main/java/com/caimei365/order/model/vo/LogisticsBatchVo.java

@@ -58,7 +58,7 @@ public class LogisticsBatchVo implements Serializable {
      */
     private Date receiptTime;
     /**
-     * 备注图片,以"||"隔开
+     * 备注图片,以"##"隔开
      */
     private String remarkImage;
     /**
@@ -73,4 +73,12 @@ public class LogisticsBatchVo implements Serializable {
      * 子订单信息
      */
     private List<ShopOrderVo> shopOrderList;
+    /**
+     * 备注图片数组
+     */
+    private String[] remarkImages;
+    /**
+     * 发货物流记录
+     */
+    private List<LogisticsRecordVo> logisticsRecordList;
 }

+ 16 - 0
src/main/java/com/caimei365/order/model/vo/LogisticsRecordVo.java

@@ -41,6 +41,10 @@ public class LogisticsRecordVo implements Serializable {
      * 此次发货数量
      */
     private Integer num;
+    /**
+     * 包装规格
+     */
+    private String unit;
     /**
      * 商品Id
      */
@@ -53,4 +57,16 @@ public class LogisticsRecordVo implements Serializable {
      * 商品图片
      */
     private String image;
+    /**
+     * 已发货数量
+     */
+    private Integer shipmentsNum;
+    /**
+     * 已退货数量
+     */
+    private Integer returnedNum;
+    /**
+     * 未发货数量
+     */
+    private Integer notShippedNum;
 }

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

@@ -7,6 +7,7 @@ import com.caimei365.order.model.vo.ShopOrderVo;
 import com.github.pagehelper.PageInfo;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Description
@@ -54,4 +55,11 @@ public interface ShipService {
      *                     }
      */
     ResponseJson<Integer> addLogistics(LogisticsDto logisticsDto);
+    /**
+     * 供应商发货记录
+     * @param shopOrderId    子订单Id
+     * @param pageNum        页码
+     * @param pageSize       每页数量
+     */
+    ResponseJson<Map<String, Object>> getDeliveryRecord(Integer shopOrderId, int pageNum, int pageSize);
 }

+ 3 - 3
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -483,7 +483,7 @@ public class OrderClubServiceImpl implements OrderClubService {
             return ResponseJson.error("订单不存在!", null);
         }
         // 获取物流批次列表
-        List<LogisticsBatchVo> batchList = orderClubMapper.getLogisticsBatchList(orderId);
+        List<LogisticsBatchVo> batchList = orderCommonMapper.getLogisticsBatchList(orderId);
         batchList.forEach(batch -> {
             // 根据物流批次获取子订单
             List<String> shopOrderIds = orderClubMapper.getBatchShopOrderIds(orderId, batch.getId());
@@ -491,11 +491,11 @@ public class OrderClubServiceImpl implements OrderClubService {
             shopOrderList.forEach(shopOrder -> {
                 shopOrder.setShopLogo(ImageUtil.getImageUrl("shopLogo", shopOrder.getShopLogo(), domain));
                 // 获取发货物流记录
-                List<LogisticsRecordVo> logisticsRecordList = orderClubMapper.getLogisticsRecord(shopOrder.getShopOrderId(), batch.getId());
+                List<LogisticsRecordVo> logisticsRecordList = orderCommonMapper.getLogisticsRecord(shopOrder.getShopOrderId(), batch.getId());
                 shopOrder.setLogisticsRecordList(logisticsRecordList);
             });
             // 获取物流信息
-            List<LogisticsInformationVo> logisticsInfoList = orderClubMapper.getLogisticsInfoList(batch.getId());
+            List<LogisticsInformationVo> logisticsInfoList = orderCommonMapper.getLogisticsInfoList(batch.getId());
             logisticsInfoList.forEach(logisticsInfo -> {
                 List<LogisticsRouterVo> routers = JSONArray.parseArray(logisticsInfo.getInfo(), LogisticsRouterVo.class);
                 if (!CollectionUtils.isEmpty(routers)) {

+ 74 - 7
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -22,10 +22,13 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import static com.alibaba.fastjson.JSON.parseArray;
 
@@ -326,13 +329,77 @@ public class ShipServiceImpl implements ShipService {
         return ResponseJson.success(logisticsBatch.getId());
     }
 
-
-
-
-
-
-
-
+    /**
+     * 供应商发货记录
+     *
+     * @param shopOrderId 子订单Id
+     * @param pageNum     页码
+     * @param pageSize    每页数量
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> getDeliveryRecord(Integer shopOrderId, int pageNum, int pageSize) {
+        Integer orderId = shipMapper.getOrderIdByShopOrder(shopOrderId);
+        if (null == orderId) {
+            return ResponseJson.error("订单异常,shopOrderId:" + shopOrderId, null);
+        }
+        OrderUserinfoVo userInfo = addressMapper.getOrderUserinfo(orderId);
+        // 分页请求数据
+        PageHelper.startPage(pageNum, pageSize);
+        // 获取物流批次列表
+        List<LogisticsBatchVo> batchList = orderCommonMapper.getLogisticsBatchList(orderId);
+        if (null != batchList && batchList.size() > 0) {
+            for (LogisticsBatchVo batchVo : batchList) {
+                batchVo.setShopOrderId(shopOrderId);
+                if (StringUtils.isNotBlank(batchVo.getRemarkImage())) {
+                    String[] remarkImages = batchVo.getRemarkImage().split("##");
+                    batchVo.setRemarkImages(remarkImages);
+                }
+                // 获取发货物流记录
+                List<LogisticsRecordVo> recordList = orderCommonMapper.getLogisticsRecord(shopOrderId, batchVo.getId());
+                if (null != recordList && recordList.size() > 0) {
+                    for (LogisticsRecordVo recordVo : recordList) {
+                        OrderProductVo orderProduct = shipMapper.getOrderProductById(recordVo.getOrderProductId());
+                        recordVo.setBuyNum(orderProduct.getNum() + orderProduct.getPresentNum());
+                        recordVo.setImage(orderProduct.getImage());
+                        recordVo.setUnit(orderProduct.getProductUnit());
+                        // 已发货数量
+                        int shipmentsNum = orderProduct.getNum() + orderProduct.getPresentNum() - orderProduct.getNotOutStore();
+                        recordVo.setShipmentsNum(shipmentsNum);
+                        // 已退货数量
+                        Integer returnedNum = orderCommonMapper.countReturnedNum(orderProduct.getShopOrderId(), orderProduct.getProductId());
+                        returnedNum = null != returnedNum ? returnedNum : 0;
+                        recordVo.setReturnedNum(returnedNum);
+                        // 已取消发货数量
+                        Integer actualCancelNum = orderCommonMapper.countActualCancelNum(orderProduct.getShopOrderId(), orderProduct.getProductId());
+                        actualCancelNum = null != actualCancelNum ? actualCancelNum : 0;
+                        // 未发货数量
+                        recordVo.setNotShippedNum(orderProduct.getNotOutStore() - actualCancelNum);
+                    }
+                }
+                batchVo.setLogisticsRecordList(recordList);
+                // 获取物流信息
+                List<LogisticsInformationVo> logisticsInfoList = orderCommonMapper.getLogisticsInfoList(batchVo.getId());
+                logisticsInfoList.forEach(logisticsInfo -> {
+                    List<LogisticsRouterVo> routers = JSONArray.parseArray(logisticsInfo.getInfo(), LogisticsRouterVo.class);
+                    if (!CollectionUtils.isEmpty(routers)) {
+                        routers.forEach(router -> {
+                            if (org.apache.commons.lang3.StringUtils.isEmpty(router.getDesc())) {
+                                router.setDesc(router.getContext());
+                            }
+                        });
+                        logisticsInfo.setRouterList(routers);
+                    }
+                });
+                batchVo.setLogisticsInformationList(logisticsInfoList);
+            }
+            batchList.removeIf(logisticsBatch -> null == logisticsBatch.getLogisticsRecordList() || 0 == logisticsBatch.getLogisticsRecordList().size());
+        }
+        PageInfo<ShopOrderVo> pageInfo = new PageInfo(batchList);
+        Map<String, Object> map = new HashMap<>(2);
+        map.put("userInfo", userInfo);
+        map.put("logisticsBatchPage", pageInfo);
+        return ResponseJson.success(map);
+    }
 
 
 }

+ 0 - 49
src/main/resources/mapper/OrderClubMapper.xml

@@ -408,61 +408,12 @@
         FROM bp_clause
         where id = #{clauseId}
     </select>
-    <select id="getLogisticsBatchList" resultType="com.caimei365.order.model.vo.LogisticsBatchVo">
-        SELECT
-            id,
-            shopOrderID AS shopOrderId,
-            orderID AS orderId,
-            outStoreTimes,
-            status,
-            mailer,
-            shopID AS shopId,
-            updateDate,
-            deliveryTime,
-            receiptTime,
-            remarkImage,
-            remark
-        FROM cm_logistics_batch WHERE orderID= #{orderId}
-    </select>
     <select id="getBatchShopOrderIds" resultType="java.lang.String">
         SELECT shopOrderID
         FROM cm_logistics_record
         WHERE orderID = #{orderId}
         AND logisticsBatchID = #{id}
     </select>
-    <select id="getLogisticsRecord" resultType="com.caimei365.order.model.vo.LogisticsRecordVo">
-        SELECT
-            clr.id,
-            clr.logisticsBatchID AS shopOrderId,
-            clr.shopOrderID AS shopOrderId,
-            clr.orderID AS orderProductId,
-            clr.orderProductID AS orderProductId,
-            clr.buyNum,
-            clr.num,
-            clr.productID AS productId,
-            clr.productName,
-            clr.image
-        FROM cm_logistics_record clr
-        WHERE clr.shopOrderID = #{shopOrderId} AND clr.logisticsBatchID = #{logisticsBatchId}
-    </select>
-    <select id="getLogisticsInfoList" resultType="com.caimei365.order.model.vo.LogisticsInformationVo">
-        SELECT DISTINCT
-            li.id,
-            li.logisticsBatchID AS logisticsBatchId,
-            li.type,
-            li.shopOrderID AS shopOrderId,
-            li.orderProductID AS orderProductId,
-            li.orderID AS orderId,
-            li.nu,
-            li.state,
-            li.info,
-            li.logisticsCompanyName,
-            li.logisticsCompanyCode,
-            li.shopID AS shopId,
-            li.updateDate,
-            li.remarks
-            WHERE li.logisticsBatchID = #{logisticsBatchId}
-    </select>
     <select id="getOrderCodeById" resultType="com.caimei365.order.model.vo.OrderShareCodeVo">
         SELECT
             id,

+ 49 - 0
src/main/resources/mapper/OrderCommonMapper.xml

@@ -319,4 +319,53 @@
         WHERE cso.delFlag = 0
         AND orderID = #{orderId}
     </select>
+    <select id="getLogisticsBatchList" resultType="com.caimei365.order.model.vo.LogisticsBatchVo">
+        SELECT
+        id,
+        shopOrderID AS shopOrderId,
+        orderID AS orderId,
+        outStoreTimes,
+        status,
+        mailer,
+        shopID AS shopId,
+        updateDate,
+        deliveryTime,
+        receiptTime,
+        remarkImage,
+        remark
+        FROM cm_logistics_batch WHERE orderID= #{orderId}
+    </select>
+    <select id="getLogisticsRecord" resultType="com.caimei365.order.model.vo.LogisticsRecordVo">
+        SELECT
+        clr.id,
+        clr.logisticsBatchID AS shopOrderId,
+        clr.shopOrderID AS shopOrderId,
+        clr.orderID AS orderProductId,
+        clr.orderProductID AS orderProductId,
+        clr.buyNum,
+        clr.num,
+        clr.productID AS productId,
+        clr.productName,
+        clr.image
+        FROM cm_logistics_record clr
+        WHERE clr.shopOrderID = #{shopOrderId} AND clr.logisticsBatchID = #{logisticsBatchId}
+    </select>
+    <select id="getLogisticsInfoList" resultType="com.caimei365.order.model.vo.LogisticsInformationVo">
+        SELECT DISTINCT
+        li.id,
+        li.logisticsBatchID AS logisticsBatchId,
+        li.type,
+        li.shopOrderID AS shopOrderId,
+        li.orderProductID AS orderProductId,
+        li.orderID AS orderId,
+        li.nu,
+        li.state,
+        li.info,
+        li.logisticsCompanyName,
+        li.logisticsCompanyCode,
+        li.shopID AS shopId,
+        li.updateDate,
+        li.remarks
+        WHERE li.logisticsBatchID = #{logisticsBatchId}
+    </select>
 </mapper>

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

@@ -185,4 +185,8 @@
         SELECT sendOutStatus FROM cm_shop_order
         WHERE cso.delFlag = 0 AND orderID = #{orderId}
     </select>
+    <select id="getOrderIdByShopOrder" resultType="java.lang.Integer">
+        SELECT orderID FROM cm_shop_order
+        WHERE shopOrderID = #{shopOrderId} AND delFlag = '0'
+    </select>
 </mapper>