Przeglądaj źródła

补全导出功能

Huanyi 2 tygodni temu
rodzic
commit
108f996733
17 zmienionych plików z 426 dodań i 8 usunięć
  1. 2 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteAreaStationService.java
  2. 8 0
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderStatusEnum.java
  3. 8 0
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderTypeEnum.java
  4. 2 0
      ruoyi-api/yingpaipay-api-service/src/main/java/org/dromara/service/api/domain/vo/RemoteSysServiceVo.java
  5. 1 1
      ruoyi-api/yingpaipay-api-service/src/main/java/org/dromara/service/api/enums/ServiceModeEnum.java
  6. 19 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteAreaStationServiceImpl.java
  7. 1 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysAreaStationService.java
  8. 39 3
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java
  9. 106 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/excel/FlfFulfillerExcel.java
  10. 8 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/enums/FlfFulfillerStatusEnum.java
  11. 4 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java
  12. 59 2
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderController.java
  13. 72 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/excel/SysSubOrderListExcel.java
  14. 2 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderService.java
  15. 93 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysSubOrderServiceImpl.java
  16. 1 0
      ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/dubbo/RemoteSysServiceServiceImpl.java
  17. 1 1
      ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/service/impl/SysServiceModeServiceImpl.java

+ 2 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteAreaStationService.java

@@ -16,4 +16,6 @@ public interface RemoteAreaStationService {
     List<RemoteAreaStationVo> listByParentId(Long parentId);
 
     List<Long> listByUserId(Long userId);
+
+    List<RemoteAreaStationVo> listAll();
 }

+ 8 - 0
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderStatusEnum.java

@@ -27,4 +27,12 @@ public enum OrderStatusEnum {
         return Arrays.asList(values());
     }
 
+    public static String getLabel(Integer status) {
+        for (OrderStatusEnum value : values()) {
+            if (value.value.equals(status)) {
+                return value.label;
+            }
+        }
+        return "";
+    }
 }

+ 8 - 0
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderTypeEnum.java

@@ -16,4 +16,12 @@ public enum OrderTypeEnum {
     private final Integer value;
     private final String label;
 
+    public static String getLabel(Integer type) {
+        for (OrderTypeEnum value : values()) {
+            if (value.value.equals(type)) {
+                return value.getLabel();
+            }
+        }
+        return null;
+    }
 }

+ 2 - 0
ruoyi-api/yingpaipay-api-service/src/main/java/org/dromara/service/api/domain/vo/RemoteSysServiceVo.java

@@ -26,4 +26,6 @@ public class RemoteSysServiceVo implements Serializable {
      */
     private String name;
 
+    private Integer mode;
+
 }

+ 1 - 1
ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/enums/ServiceModeEnum.java → ruoyi-api/yingpaipay-api-service/src/main/java/org/dromara/service/api/enums/ServiceModeEnum.java

@@ -1,4 +1,4 @@
-package org.dromara.service.enums;
+package org.dromara.service.api.enums;
 
 import lombok.AccessLevel;
 import lombok.AllArgsConstructor;

+ 19 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteAreaStationServiceImpl.java

@@ -8,8 +8,11 @@ import org.dromara.common.core.constant.CacheNames;
 import org.dromara.system.api.RemoteAreaStationService;
 import org.dromara.system.api.domain.vo.RemoteAreaStationVo;
 import org.dromara.system.domain.SysAreaStation;
+import org.dromara.system.domain.bo.SysAreaStationBo;
+import org.dromara.system.domain.vo.SysAreaStationVo;
 import org.dromara.system.mapper.SysAreaStationMapper;
 import org.dromara.system.mapper.SysUserAreaStationMapper;
+import org.dromara.system.service.ISysAreaStationService;
 import org.dromara.system.service.IUserAreaStationService;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
@@ -22,7 +25,9 @@ import java.util.List;
 public class RemoteAreaStationServiceImpl implements RemoteAreaStationService {
 
     private final SysAreaStationMapper baseMapper;
+
     private final IUserAreaStationService userAreaStationService;
+    private final ISysAreaStationService sysAreaStationService;
 
     @Cacheable(value = CacheNames.SYS_AREA_STATION_NAME, key = "#id")
     @Override
@@ -56,4 +61,18 @@ public class RemoteAreaStationServiceImpl implements RemoteAreaStationService {
     public List<Long> listByUserId(Long userId) {
         return userAreaStationService.getSitesByUserId(userId);
     }
+
+    @Override
+    public List<RemoteAreaStationVo> listAll() {
+        List<SysAreaStationVo> list = sysAreaStationService.queryList(new SysAreaStationBo());
+        return list.stream().map(e -> {
+            RemoteAreaStationVo vo = new RemoteAreaStationVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            vo.setParentId(e.getParentId());
+            vo.setType(e.getType());
+            vo.setStatus(e.getStatus());
+            return vo;
+        }).toList();
+    }
 }

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysAreaStationService.java

@@ -65,4 +65,5 @@ public interface ISysAreaStationService {
     List<SysAreaStationStatusVo> listStatus();
 
     List<SysAreaStationOnStoreVo> listOnStore();
+
 }

+ 39 - 3
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java

@@ -1,20 +1,27 @@
 package org.dromara.fulfiller.controller;
 
+import java.math.BigDecimal;
 import java.time.Duration;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.common.core.constant.GlobalConstants;
+import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.fulfiller.domain.FlfGps;
 import org.dromara.fulfiller.domain.bo.*;
+import org.dromara.fulfiller.domain.excel.FlfFulfillerExcel;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerGpsVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfilllerListByNameAndPhoneNumberVo;
+import org.dromara.fulfiller.enums.FlfFulfillerStatusEnum;
+import org.dromara.system.api.RemoteAreaStationService;
+import org.dromara.system.api.RemoteDictService;
+import org.dromara.system.api.domain.vo.RemoteAreaStationVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -51,6 +58,9 @@ public class FlfFulfillerController extends BaseController {
     private final IFlfFulfillerService fulfillerService;
     private final FlfAuditMapper auditMapper;
 
+    @DubboReference
+    private final RemoteDictService remoteDictService;
+
     /**
      * 获取当前登录履约者个人信息(App端,只需登录无需后台权限)
      */
@@ -193,8 +203,34 @@ public class FlfFulfillerController extends BaseController {
     @RepeatSubmit()
     @PostMapping("/export")
     public void export(FlfFulfillerBo bo, HttpServletResponse response) {
+
+        remoteDictService.selectDictDataByType("sys_user_sex");
         List<FlfFulfillerVo> list = fulfillerService.queryList(bo);
-        ExcelUtil.exportExcel(list, "履约者管理", FlfFulfillerVo.class, response);
+
+        List<FlfFulfillerExcel> excels = list.stream().map(e -> {
+            FlfFulfillerExcel excel = new FlfFulfillerExcel();
+            excel.setId(e.getId());
+            excel.setUserId(e.getUserId());
+            excel.setName(e.getName());
+            excel.setRealName(e.getRealName());
+            excel.setPhone(e.getPhone());
+            excel.setGender(Objects.equals(e.getGender(), "0") ? "男" : Objects.equals(e.getGender(), "1") ? "女" : "未知");
+            excel.setBirthday(Optional.ofNullable(e.getBirthday()).map(DateUtils::formatDateTime).orElse("-"));
+            excel.setAge(e.getAge());
+            excel.setServiceTypes(e.getServiceTypeList() != null ? String.join(",", e.getServiceTypeList().toArray(String[]::new)) : "-");
+            excel.setWorkType(Objects.equals(e.getWorkType(), "full_time") ? "全职专送" : "兼职众包");
+            excel.setLevel(e.getLevel());
+            excel.setPoints(e.getPoints());
+            excel.setBalance(new BigDecimal(e.getBalance()).multiply(new BigDecimal("0.01")));
+            excel.setStatus(FlfFulfillerStatusEnum.getLabel(e.getStatus()));
+            excel.setOrderCount(e.getOrderCount());
+            excel.setRejectCount(e.getRejectCount());
+            excel.setCreateTime(Optional.ofNullable(e.getCreateTime()).map(DateUtils::formatDateTime).orElse("-"));
+            excel.setRegisterDays(e.getRegisterDays());
+            excel.setStationName(e.getStationName());
+            return excel;
+        }).toList();
+        ExcelUtil.exportExcel(excels, "履约者管理", FlfFulfillerExcel.class, response);
     }
 
     /**

+ 106 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/excel/FlfFulfillerExcel.java

@@ -0,0 +1,106 @@
+package org.dromara.fulfiller.domain.excel;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.fulfiller.domain.FlfFulfiller;
+import org.dromara.fulfiller.domain.vo.SysTagVo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 履约者信息视图对象 flf_fulfiller
+ *
+ * @author steelwei
+ * @date 2026-03-01
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class FlfFulfillerExcel implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+    private Long userId;
+    @ExcelProperty(value = "名称")
+    private String name;
+    @ExcelProperty(value = "真实姓名")
+    private String realName;
+    @ExcelProperty(value = "电话")
+    private String phone;
+    @ExcelProperty(value = "性别")
+    private String gender;
+    private String birthday;
+    private Integer age;
+    private Long avatar;
+    @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "avatar")
+    private String avatarUrl;
+    private String idCard;
+    private Long idCardFront;
+    private Long idCardBack;
+    private String idCardExpiry;
+    @ExcelProperty(value = "服务类型")
+    private String serviceTypes;
+//    @ExcelProperty(value = "工作城市")
+    private String cityName;
+    @ExcelProperty(value = "所属站点")
+    private String stationName;
+    @ExcelProperty(value = "工作类型")
+    private String workType;
+    @ExcelProperty(value = "等级")
+    private Integer level;
+    private String levelName;
+    @ExcelProperty(value = "积分")
+    private Integer points;
+    @ExcelProperty(value = "余额")
+    private BigDecimal balance;
+    @ExcelProperty(value = "状态")
+    private String status;
+    private Boolean authId;
+    private Boolean authQual;
+    private String qualImages;
+    @ExcelProperty(value = "订单量")
+    private Integer orderCount;
+    @ExcelProperty(value = "拒单量")
+    private Integer rejectCount;
+    private BigDecimal rating;
+    private String createTime;
+
+    /** 身份证正面图片URL */
+    @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "idCardFront")
+    private String idCardFrontUrl;
+    /** 身份证背面图片URL */
+    @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "idCardBack")
+    private String idCardBackUrl;
+    /** 资质证书图片URL(逗号分隔的OSS ID自动翻译) */
+    @TableField(exist = false)
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "qualImages")
+    private String qualImageUrls;
+    /** 服务类型列表(解析后) */
+    private List<String> serviceTypeList;
+    /** 是否已设置密码 */
+    private Boolean hasPassword;
+    /** 已注册天数 */
+    @ExcelProperty(value = "注册天数")
+    private Long registerDays;
+    /** 是否有待审核的认证变更 */
+    private Boolean pendingAudit;
+
+    /**
+     * 关联标签列表
+     */
+    private String tags;
+
+}

+ 8 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/enums/FlfFulfillerStatusEnum.java

@@ -15,4 +15,12 @@ public enum FlfFulfillerStatusEnum {
     private final String value;
     private final String label;
 
+    public static String getLabel(String status) {
+        for (FlfFulfillerStatusEnum value : values()) {
+            if (value.value.equals(status)) {
+                return value.label;
+            }
+        }
+        return "";
+    }
 }

+ 4 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java

@@ -121,7 +121,10 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
     public List<FlfFulfillerVo> queryList(FlfFulfillerBo bo) {
         LambdaQueryWrapper<FlfFulfiller> lqw = buildQueryWrapper(bo);
         List<FlfFulfillerVo> list = baseMapper.selectVoList(lqw);
-        list.forEach(vo -> vo.setTags(queryTagsByTargetId(vo.getId(), TagTargetConstants.FULFILLER)));
+        list.forEach(vo -> {
+            vo.setTags(queryTagsByTargetId(vo.getId(), TagTargetConstants.FULFILLER));
+            enrichVo(vo);
+        });
         return list;
     }
 

+ 59 - 2
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderController.java

@@ -1,20 +1,34 @@
 package org.dromara.order.controller;
 
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.api.RemotePetService;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.common.web.core.BaseController;
+import org.dromara.order.api.enums.OrderStatusEnum;
+import org.dromara.order.api.enums.OrderTypeEnum;
 import org.dromara.order.domain.bo.*;
+import org.dromara.order.domain.excel.SysSubOrderListExcel;
 import org.dromara.order.domain.vo.*;
 import org.dromara.order.service.ISysSubOrderService;
+import org.dromara.service.api.RemoteSysServiceService;
+import org.dromara.service.api.domain.vo.RemoteSysServiceVo;
+import org.dromara.service.api.enums.ServiceModeEnum;
+import org.dromara.system.api.RemoteAreaStationService;
+import org.dromara.system.api.domain.vo.RemoteAreaStationVo;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
 
 @Validated
 @RestController
@@ -24,6 +38,11 @@ public class SysSubOrderController extends BaseController {
 
     private final ISysSubOrderService subOrderService;
 
+    @DubboReference
+    private final RemoteSysServiceService remoteSysServiceService;
+    @DubboReference
+    private final RemoteAreaStationService remoteAreaStationService;
+
     @GetMapping("/list")
     public TableDataInfo<SysSubOrderListPageVo> list(SysSubOrderListPageBo bo, PageQuery pageQuery) {
         return subOrderService.list(bo, pageQuery);
@@ -58,7 +77,7 @@ public class SysSubOrderController extends BaseController {
 
     @RepeatSubmit()
     @PutMapping("/accept")
-    public R<Void> accept(@RequestBody  SysSubOrderAcceptBo bo) {
+    public R<Void> accept(@RequestBody SysSubOrderAcceptBo bo) {
         return toAjax(subOrderService.accept(bo));
     }
 
@@ -133,4 +152,42 @@ public class SysSubOrderController extends BaseController {
         return subOrderService.listOnStatistic(status, pageQuery, LoginHelper.getUserId());
     }
 
+    @PostMapping("/export")
+    public void export(SysSubOrderListPageBo bo, HttpServletResponse response) {
+        List<SysSubOrderListPageVo> list = subOrderService.listExcel(bo);
+
+        Map<Long, RemoteSysServiceVo> serviceMap = new HashMap<>();
+        Map<Long, RemoteAreaStationVo> areaStationMap = new HashMap<>();
+        remoteSysServiceService.listAll().forEach(e -> serviceMap.put(e.getId(), e));
+        remoteAreaStationService.listAll().forEach(e -> areaStationMap.put(e.getId(), e));
+
+        List<SysSubOrderListExcel> excels = list.stream()
+            .map(e -> {
+                SysSubOrderListExcel excel = new SysSubOrderListExcel();
+                excel.setId(e.getId());
+                excel.setCode(e.getCode());
+                excel.setService(e.getService());
+                RemoteSysServiceVo service = serviceMap.get(e.getService());
+                excel.setServiceName(service.getName());
+                excel.setServiceTime(Optional.ofNullable(e.getServiceTime()).map(DateUtils::formatDateTime).orElse("-"));
+                excel.setToAddress(e.getToAddress());
+                excel.setMode(service.getMode().equals(ServiceModeEnum.PICK_UP.getValue()) ? (e.getMode() == 1 ? "往返" : "单程") : "-");
+                excel.setType(OrderTypeEnum.getLabel(e.getType()));
+                excel.setPetName(e.getPetName());
+                excel.setPetBreed(e.getPetBreed());
+                excel.setCustomerName(e.getCustomerName());
+                excel.setSiteName(areaStationMap.get(e.getSite()).getName());
+                excel.setStoreName(e.getStoreName());
+                excel.setPlacerUsername(e.getPlacerUsername());
+                excel.setCreateTime(Optional.ofNullable(e.getCreateTime()).map(DateUtils::formatDateTime).orElse("-"));
+                excel.setStatus(OrderStatusEnum.getLabel(e.getStatus()));
+                excel.setFulfillerName(e.getFulfillerName());
+                excel.setPrice(Optional.ofNullable(e.getPrice())
+                        .map(price -> new BigDecimal(price).multiply(new BigDecimal("0.01")))
+                        .orElse(null));
+                return excel;
+            }).toList();
+        ExcelUtil.exportExcel(excels, "订单列表", SysSubOrderListExcel.class, response);
+    }
+
 }

+ 72 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/excel/SysSubOrderListExcel.java

@@ -0,0 +1,72 @@
+package org.dromara.order.domain.excel;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ExcelIgnoreUnannotated
+public class SysSubOrderListExcel implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ExcelProperty(value = "订单号")
+    private String code;
+
+    private Long service;
+    @ExcelProperty(value = "服务类型")
+    private String serviceName;
+
+    @ExcelProperty(value = "服务时间")
+    private String serviceTime;
+
+    @ExcelProperty(value = "起点")
+    private String toAddress;
+
+    @ExcelProperty(value = "接送模式")
+    private String mode;
+
+    @ExcelProperty(value = "接送类型")
+    private String type;
+
+    private Long pet;
+    @ExcelProperty(value = "宠物名")
+    private String petName;
+    @ExcelProperty(value = "宠物品种")
+    private String petBreed;
+
+    private Long customer;
+    @ExcelProperty(value = "用户姓名")
+    private String customerName;
+
+    private Long site;
+    @ExcelProperty(value = "所属站点")
+    private String siteName;
+
+    private Long store;
+    @ExcelProperty(value = "门店")
+    private String storeName;
+
+    private Long placer;
+    @ExcelProperty(value = "下单人")
+    private String placerUsername;
+    @ExcelProperty(value = "创建时间")
+    private String createTime;
+    @ExcelProperty(value = "订单状态")
+    private String status;
+
+    private Long fulfiller;
+    @ExcelProperty(value = "履约者")
+    private String fulfillerName;
+    @ExcelProperty(value = "服务费")
+    private BigDecimal price;
+
+}

+ 2 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderService.java

@@ -47,4 +47,6 @@ public interface ISysSubOrderService {
     TableDataInfo<SysSubOrderListOnStoreVo> listOnStore(Long storeId, PageQuery pageQuery);
 
     TableDataInfo<SysSubOrderStatisticPageVo> listOnStatistic(Integer status, PageQuery pageQuery, Long userId);
+
+    List<SysSubOrderListPageVo> listExcel(SysSubOrderListPageBo bo);
 }

+ 93 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysSubOrderServiceImpl.java

@@ -942,4 +942,97 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             return vo;
         }));
     }
+
+    @Override
+    public List<SysSubOrderListPageVo> listExcel(SysSubOrderListPageBo bo) {
+        LambdaQueryWrapper<SysSubOrder> orderWrapper = Wrappers.lambdaQuery(SysSubOrder.class);
+
+        if (StringUtils.isNotBlank(bo.getContent())) {
+            List<String> tenantIds = remoteTenantService.selectTenantIdsByName(bo.getContent());
+            List<Long> userIds = remoteUserService.selectUserIdsByName(bo.getContent());
+            List<Long> customerIds = remoteCustomerService.selectIdsByName(bo.getContent());
+            orderWrapper.and(w -> w
+                .in(SysSubOrder::getTenantId, tenantIds.isEmpty() ? List.of(TenantConstants.DEFAULT_TENANT_ID) : tenantIds).or()
+                .in(SysSubOrder::getOrderPlacer, WrapperUtils.convertIds(userIds)).or()
+                .in(SysSubOrder::getUsrCustomer, WrapperUtils.convertIds(customerIds))
+            );
+        }
+
+        orderWrapper.in(SysSubOrder::getStoreSite, WrapperUtils.convertIds(remoteAreaStationService.listByUserId(LoginHelper.getUserId())));
+
+        List<SysSubOrder> list = baseMapper.selectList(orderWrapper.orderByDesc(SysSubOrder::getId)
+                .eq(bo.getStatus() != null, SysSubOrder::getStatus, bo.getStatus())
+                .eq(bo.getService() != null, SysSubOrder::getService, bo.getService()));
+
+        List<Long> petIds = new ArrayList<>();
+        List<Long> storeIds = new ArrayList<>();
+        List<Long> customerIds = new ArrayList<>();
+        List<Long> userIds = new ArrayList<>();
+        List<Long> fulfillerIds = new ArrayList<>();
+        list.forEach(e -> {
+            petIds.add(e.getUsrPet());
+            customerIds.add(e.getUsrCustomer());
+            storeIds.add(e.getStore());
+            userIds.add(e.getOrderPlacer());
+            if (e.getFulfiller() != null) {
+                fulfillerIds.add(e.getFulfiller());
+            }
+        });
+        Map<Long, RemotePetVo> petMap = new HashMap<>();
+        Map<Long, RemoteStoreVo> storeMap = new HashMap<>();
+        Map<Long, RemoteCustomerVo> customerMap = new HashMap<>();
+        Map<Long, RemoteUserVo> userMap = new HashMap<>();
+        Map<Long, RemoteFulfillerVo> fulfillerMap = new HashMap<>();
+        remotePetService.getByIds(petIds).forEach(e -> petMap.put(e.getId(), e));
+        remoteStoreService.getByIds(storeIds).forEach(e -> storeMap.put(e.getId(), e));
+        remoteUserService.getByIds(userIds).forEach(e -> userMap.put(e.getUserId(), e));
+        remoteCustomerService.getByIds(customerIds).forEach(e -> customerMap.put(e.getId(), e));
+        remoteFulfillerService.getByIds(fulfillerIds).forEach(e -> fulfillerMap.put(e.getId(), e));
+
+        return list.stream().map(e -> {
+            SysSubOrderListPageVo vo = new SysSubOrderListPageVo();
+            vo.setId(e.getId());
+            vo.setCode(e.getCode());
+            vo.setService(e.getService());
+            vo.setServiceTime(e.getServiceTime());
+            vo.setMode(e.getMode());
+            vo.setType(e.getType());
+            vo.setPet(e.getUsrPet());
+            RemotePetVo pet = petMap.get(e.getUsrPet());
+            if (pet != null) {
+                vo.setPetName(pet.getName());
+                vo.setPetBreed(pet.getBreed());
+            }
+            vo.setCustomer(e.getUsrCustomer());
+            RemoteCustomerVo customer = customerMap.get(e.getUsrCustomer());
+            if (customer != null) {
+                vo.setCustomerName(customer.getName());
+            }
+            vo.setToAddress(e.getToAddress());
+            vo.setSite(e.getStoreSite());
+            vo.setStore(e.getStore());
+            RemoteStoreVo store = storeMap.get(e.getStore());
+            if (store != null) {
+                vo.setStoreName(store.getName());
+            }
+            vo.setPlacer(e.getOrderPlacer());
+            RemoteUserVo placer = userMap.get(e.getOrderPlacer());
+            if (placer != null) {
+                vo.setPlacerUsername(placer.getUserName());
+            }
+            vo.setCreateTime(e.getCreateTime());
+            vo.setStatus(e.getStatus());
+            vo.setFulfiller(e.getFulfiller());
+            RemoteFulfillerVo fulfiller = fulfillerMap.get(e.getFulfiller());
+            if (fulfiller != null) {
+                vo.setFulfillerName(fulfiller.getName());
+                vo.setFulfillerStatus(fulfiller.getStatus());
+            }
+            vo.setPrice(e.getPrice());
+            vo.setRemark(e.getRemark());
+            vo.setNursingSummary(e.getNursingSummary());
+            vo.setNursingSummaryTime(e.getNursingSummaryTime());
+            return vo;
+        }).toList();
+    }
 }

+ 1 - 0
ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/dubbo/RemoteSysServiceServiceImpl.java

@@ -39,6 +39,7 @@ public class RemoteSysServiceServiceImpl implements RemoteSysServiceService {
             RemoteSysServiceVo vo = new RemoteSysServiceVo();
             vo.setId(e.getId());
             vo.setName(e.getName());
+            vo.setMode(e.getMode());
             return vo;
         }).toList();
     }

+ 1 - 1
ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/service/impl/SysServiceModeServiceImpl.java

@@ -1,7 +1,7 @@
 package org.dromara.service.service.impl;
 
 import org.dromara.service.domain.vo.SysServiceModeVo;
-import org.dromara.service.enums.ServiceModeEnum;
+import org.dromara.service.api.enums.ServiceModeEnum;
 import org.dromara.service.service.ISysServiceModeService;
 import org.springframework.stereotype.Service;