Преглед изворни кода

销售端销售订单-查看里可查看历史订单商品

peicj пре 1 недеља
родитељ
комит
2ae1025af4

+ 23 - 0
fs-common/src/main/java/com/fs/common/core/controller/BaseController.java

@@ -2,7 +2,10 @@ package com.fs.common.core.controller;
 
 import java.beans.PropertyEditorSupport;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.WebDataBinder;
@@ -62,6 +65,26 @@ public class BaseController
         }
     }
 
+    /**
+     * 自定义分页
+     *
+     * @param pageNum  当前页码(从1开始)
+     * @param pageSize 每页显示的数据条数
+     * @return 包含 limit(每页数据量) 和 offset(第几页) 的 Map
+     */
+    public static Map<String, Integer> calculateLimitAndOffset(int pageNum, int pageSize) {
+        // 计算 offset:(页码 - 1) * 每页大小
+        int offset = (pageNum - 1) * pageSize;
+        // limit 就是每页大小
+        int limit = pageSize;
+
+        // 构造返回结果
+        Map<String, Integer> result = new HashMap<>();
+        result.put("offset", offset);
+        result.put("limit", limit);
+
+        return result;
+    }
     /**
      * 设置请求排序数据
      */

+ 70 - 7
fs-company/src/main/java/com/fs/hisStore/controller/FsStoreOrderScrmController.java

@@ -1,11 +1,14 @@
 package com.fs.hisStore.controller;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fs.common.annotation.DataScope;
 import com.fs.common.annotation.Log;
+import com.fs.common.constant.HttpStatus;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
@@ -25,10 +28,7 @@ import com.fs.framework.service.TokenService;
 import com.fs.his.domain.FsUser;
 import com.fs.his.service.IFsUserService;
 import com.fs.hisStore.config.StoreConfig;
-import com.fs.hisStore.domain.FsStoreOrderItemScrm;
-import com.fs.hisStore.domain.FsStoreOrderScrm;
-import com.fs.hisStore.domain.FsStoreOrderStatusScrm;
-import com.fs.hisStore.domain.FsStorePaymentScrm;
+import com.fs.hisStore.domain.*;
 import com.fs.hisStore.dto.ExpressInfoDTO;
 import com.fs.hisStore.dto.FsStoreOrderPayDeliveryDTO;
 import com.fs.hisStore.dto.StoreOrderProductDTO;
@@ -48,9 +48,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -259,6 +257,71 @@ public class FsStoreOrderScrmController extends BaseController
                 .put("auditLogs", auditLogs);
     }
 
+    /**
+     * 查询当前用户的其余订单
+     * @param param 入参
+     * @return TableDataInfo
+     */
+    @GetMapping("/queryUserOtherOrderPage")
+    public TableDataInfo queryUserOtherOrderPage(FsStoreOrderScrmOtherUserOrderParam param){
+        int total = fsStoreOrderService.selectFsStoreOrderByUserIDexcludeCurrentOrderIdCount(param.getOrderUserId(), param.getOrderId());
+        if(total == 0){
+            return new TableDataInfo(null, 0);
+        }
+
+        // 计算分页参数
+        Map<String, Integer> pageMap = calculateLimitAndOffset(param.getPageNum(), param.getPageSize());
+        Integer offset = pageMap.get("offset");
+        Integer limit = pageMap.get("limit");
+
+        // 查找订单,排除当前订单
+        List<FsStoreOrderScrm> orderList = fsStoreOrderService.selectFsStoreOrderByUserIDexcludeCurrentOrderId(
+                param.getOrderUserId(), param.getOrderId(), offset, limit);
+
+        if (CollectionUtil.isEmpty(orderList)) {
+            return new TableDataInfo(Collections.emptyList(), 0);
+        }
+
+        // 批量获取所有涉及的销售人员信息
+        Set<Long> companyUserIds = orderList.stream()
+                .map(FsStoreOrderScrm::getCompanyUserId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toSet());
+
+        Map<Long, String> companyUserMap;
+        if (!companyUserIds.isEmpty()) {
+            List<CompanyUser> companyUsers = companyUserService.selectCompanyUserByIds(companyUserIds);
+            companyUserMap = companyUsers.stream()
+                    .collect(Collectors.toMap(CompanyUser::getUserId, CompanyUser::getNickName));
+        } else {
+            companyUserMap = new HashMap<>();
+        }
+
+        // 构建返回结果
+        List<FsStoreOrderScrmOtherUserOrderVO> resultList = orderList.stream()
+                .map(order -> {
+                    FsStoreOrderScrmOtherUserOrderVO vo = new FsStoreOrderScrmOtherUserOrderVO();
+                    vo.setOrderId(order.getId());
+                    vo.setOrderCode(order.getOrderCode());
+                    vo.setOrderCreateTime(order.getCreateTime());
+                    vo.setOrderType(order.getOrderType());
+                    vo.setOrderMoney(order.getPayPrice().add(order.getPayDelivery()));
+                    vo.setOrderPayDelivery(order.getPayDelivery());
+                    vo.setOrderStatus(order.getStatus());
+
+                    // 从缓存中获取销售人员姓名
+                    if (order.getCompanyUserId() != null) {
+                        vo.setOrderCompanyUserName(companyUserMap.get(order.getCompanyUserId()));
+                    }
+                    vo.setOrderItemJson(order.getItemJson());
+                    return vo;
+                })
+                .collect(Collectors.toList());
+
+        return new TableDataInfo(resultList, total);
+    }
+
+
     @GetMapping(value = "/queryAddress/{id}")
     @PreAuthorize("@ss.hasPermi('store:storeOrder:queryAddress')")
     public R getAddress(@PathVariable("id") Long id)

+ 10 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java

@@ -1451,5 +1451,14 @@ public interface FsStoreOrderScrmMapper
      * @return 更新条数
      */
     int batchUpdateAuditStatus(@Param("orderIds") List<Long> orderIds, @Param("isAudit") Integer isAudit);
-
+    /**
+     * 查询用户当前订单下的其余订单
+     * @param userId    员工id
+     * @param notOrderId    当前订单id
+     * @return List<FsStoreOrderScrm> 其余订单
+     */
+    @Select("SELECT * FROM fs_store_order_scrm WHERE user_id = #{userId} AND id != #{notOrderId} order by create_time desc limit #{offset},#{limit}")
+    List<FsStoreOrderScrm> selectFsStoreOrderByUserIDexcludeCurrentOrderId(@Param("userId") Long userId, @Param("notOrderId") Long notOrderId,@Param("offset") Integer offset, @Param("limit") Integer limit);
+    @Select("SELECT count(*) FROM fs_store_order_scrm WHERE user_id = #{userId} AND id != #{notOrderId}")
+    int selectFsStoreOrderByUserIDexcludeCurrentOrderIdCount(@Param("userId") Long userId, @Param("notOrderId") Long notOrderId);
 }

+ 21 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsStoreOrderScrmOtherUserOrderParam.java

@@ -0,0 +1,21 @@
+package com.fs.hisStore.param;
+
+import lombok.Data;
+
+/**
+ * @Author:peicj
+ * @Description: 查询用户其它订单入参
+ * @Date:2026/2/10 13:34
+ */
+
+@Data
+public class FsStoreOrderScrmOtherUserOrderParam {
+
+
+    private Integer pageNum;
+    private Integer pageSize;
+
+    private Long orderId;
+
+    private Long orderUserId;
+}

+ 12 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreOrderScrmService.java

@@ -365,4 +365,16 @@ public interface IFsStoreOrderScrmService
     R orderRemark(FsStoreOrderScrm orderScrm);
 
     int updateStoreOrderItemJson(Long orderId,Integer backendEditProductType);
+
+    /**
+     * 查询当前用户下的其余订单
+     * @param userId    员工id
+     * @param notOrderId    当前订单id
+     * @param offset    页码
+     * @param limit    条数
+     * @return List<FsStoreOrderScrm> 其余订单
+     */
+    List<FsStoreOrderScrm> selectFsStoreOrderByUserIDexcludeCurrentOrderId(Long userId, Long notOrderId,Integer offset, Integer limit);
+
+    int selectFsStoreOrderByUserIDexcludeCurrentOrderIdCount(Long userId, Long notOrderId);
 }

+ 10 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -5637,6 +5637,16 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         return fsStoreOrderMapper.updateFsStoreOrder(order);
     }
 
+    @Override
+    public List<FsStoreOrderScrm> selectFsStoreOrderByUserIDexcludeCurrentOrderId(Long userId, Long notOrderId,Integer offset, Integer limit) {
+        return fsStoreOrderMapper.selectFsStoreOrderByUserIDexcludeCurrentOrderId(userId,notOrderId,offset,limit);
+    }
+
+    @Override
+    public int selectFsStoreOrderByUserIDexcludeCurrentOrderIdCount(Long userId, Long notOrderId) {
+        return fsStoreOrderMapper.selectFsStoreOrderByUserIDexcludeCurrentOrderIdCount(userId,notOrderId);
+    }
+
     private static final DateTimeFormatter CST_FORMATTER = DateTimeFormatter
             .ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US)
             .withZone(ZoneId.of("Asia/Shanghai"));

+ 52 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderScrmOtherUserOrderVO.java

@@ -0,0 +1,52 @@
+package com.fs.hisStore.vo;
+
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Author:peicj
+ * @Description: 用户其余订单
+ * @Date:2026/2/10 10:40
+ */
+@Data
+public class FsStoreOrderScrmOtherUserOrderVO extends BaseEntity {
+    /**
+     * 订单ID
+      */
+    private Long orderId;
+    /**
+     * 订单编号
+     */
+    private String orderCode;
+    /**
+     * 订单创建时间
+      */
+    private Date orderCreateTime;
+    /**
+     * 订单类型
+      */
+    private Integer orderType;
+    /**
+     * 订单金额
+      */
+    private BigDecimal orderMoney;
+    /**
+     * 订单运费
+      */
+    private BigDecimal orderPayDelivery;
+    /**
+     * 订单状态
+      */
+    private Integer orderStatus;
+    /**
+     * 销售名称
+      */
+    private String orderCompanyUserName;
+    /**
+     * item_json
+      */
+    private String orderItemJson;
+}