From 89351ad17c81b37495f21d4dfbf28f0d306a155a Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 22 十月 2025 18:23:05 +0800
Subject: [PATCH] 虚拟号修改
---
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java | 283 ++++++++++++++++++++++++++-----------------------------
1 files changed, 134 insertions(+), 149 deletions(-)
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java
index 4952123..acc252f 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java
@@ -4,35 +4,42 @@
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.admin.entity.*;
import com.ruoyi.admin.mapper.OrderMapper;
+import com.ruoyi.admin.mapper.OrderRecordingMapper;
import com.ruoyi.admin.mapper.UserMapper;
-import com.ruoyi.admin.request.OrderCountRequest;
-import com.ruoyi.admin.request.OrderQueryRequest;
-import com.ruoyi.admin.service.*;
+import com.ruoyi.admin.service.MasterWorkerService;
+import com.ruoyi.admin.service.OrderService;
+import com.ruoyi.admin.service.RecoveryClassifyService;
+import com.ruoyi.admin.service.RecoveryServeService;
import com.ruoyi.admin.vo.*;
import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.constant.OrderConstants;
import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.exception.GlobalException;
-import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.order.api.entity.OrderQueryRequest;
+import com.ruoyi.order.api.entity.ServeRecord;
+import com.ruoyi.order.api.feignClient.EvaluateClient;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.order.api.feignClient.ServeRecordClient;
import org.apache.commons.codec.CharEncoding;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -56,72 +63,32 @@
@Resource
private MasterWorkerService masterWorkerService;
@Resource
- private ServeRecordService serveRecordService;
+ private OrderClient orderClient;
@Resource
- private ServeCoordinateService serveCoordinateService;
+ private EvaluateClient evaluateClient;
@Resource
- private EvaluateService evaluateService;
+ private ServeRecordClient serveRecordClient;
+ @Resource
+ private OrderRecordingMapper orderRecordingMapper;
+
+ /**
+ * linux服务器保存订单轨迹文件夹
+ */
+ private static final String BASE_PATH = "/usr/local/coordinate/";
+// private static final String BASE_PATH = "D:/Desktop/coordinate/";
@Override
- public OrderResultVO orderCountHome(OrderCountRequest orderCount) {
- List<String> cityId = orderCount.getCityIdList();
- Integer orderState = orderCount.getOrderState();
- String countType = orderCount.getCountType();
- String startTime = orderCount.getStartTime();
- String endTime = orderCount.getEndTime();
- List<OrderQueryVO> list;
- // 根据查询类型查询订单信息
- if (OrderConstants.YEAR.equals(countType)) {
- list = baseMapper.orderCountByYear(cityId, orderState, startTime, endTime);
- } else if (OrderConstants.MONTH.equals(countType)) {
- list = baseMapper.orderCountByMonth(cityId, orderState, startTime, endTime);
- } else if (OrderConstants.WEEK.equals(countType)) {
- list = baseMapper.orderCountByWeek(cityId, orderState, startTime, endTime);
- } else if (OrderConstants.TODAY.equals(countType)) {
- list = baseMapper.orderCountByToday(cityId, orderState, startTime, endTime);
- } else {
- list = new ArrayList<>();
- }
- // 计算订单总额及总订单数量
- BigDecimal totalMoney;
- int orderNumber;
- if (list.isEmpty()) {
- totalMoney = BigDecimal.ZERO;
- orderNumber = 0;
- } else {
- totalMoney = list.stream().map(OrderQueryVO::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- orderNumber = list.stream().map(OrderQueryVO::getNumber).collect(Collectors.toList()).stream().mapToInt(Integer::intValue).sum();
- }
- return new OrderResultVO(totalMoney, orderNumber, list);
- }
-
- @Override
- public BigDecimal totalMoneyByQuarter(String startDateStr, String endDateStr, List<String> cityIdList) {
- return baseMapper.totalMoneyByQuarter(startDateStr, endDateStr, cityIdList);
- }
-
- @Override
- public BigDecimal totalMoneyByYear(List<String> cityIdList) {
- return baseMapper.totalMoneyByYear(cityIdList);
- }
-
- @Override
- public BigDecimal totalMoneyByMonth(List<String> cityIdList) {
- return baseMapper.totalMoneyByMonth(cityIdList);
- }
-
- @Override
- public R<String> excelExport(List<String> idList, HttpServletResponse response) {
+ public R<String> excelExport(List<com.ruoyi.order.api.entity.Order> list, HttpServletResponse response) {
try {
response.setCharacterEncoding(Constants.UTF8);
- response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setContentType("application/vnd.ms-excel");
response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
- response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(Constants.EXCEL_ORDER_FILE_NAME, CharEncoding.UTF_8) + ".xlsx");
+ response.setHeader("Content-Disposition", "attachment;filename=" +
+ URLEncoder.encode(Constants.EXCEL_ORDER_FILE_NAME, CharEncoding.UTF_8) + ".xlsx");
} catch (UnsupportedEncodingException e) {
return R.fail("excel导出失败!");
}
try {
- List<Order> list = lambdaQuery().in(Order::getId, idList).eq(Order::getIsDelete, 0).list();
// excel模板封装
ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" + Constants.EXCEL_ORDER_FILE_NAME + ".xlsx");
@@ -140,39 +107,9 @@
}
@Override
- public IPage<Order> queryPage(OrderQueryRequest orderQueryRequest) {
- // 查询参数
- String orderNumber = orderQueryRequest.getOrderNumber();
- String cityName = orderQueryRequest.getCityName();
- String reservationName = orderQueryRequest.getReservationName();
- String reservationPhone = orderQueryRequest.getReservationPhone();
- Integer state = orderQueryRequest.getState();
- String workerName = orderQueryRequest.getWorkerName();
- String workerPhone = orderQueryRequest.getWorkerPhone();
- Date orderTime = orderQueryRequest.getOrderTime();
- Date time = orderQueryRequest.getTime();
- String serveName = orderQueryRequest.getServeName();
- Page<Order> page = Page.of(orderQueryRequest.getPageNum(), orderQueryRequest.getPageSize());
- // 构建查询体
- LambdaQueryChainWrapper<Order> wrapper = lambdaQuery();
- wrapper = StringUtils.isNotBlank(orderNumber) ? wrapper.like(Order::getOrderNumber, orderNumber) : wrapper;
- wrapper = StringUtils.isNotBlank(cityName) ? wrapper.like(Order::getReservationAddress, cityName) : wrapper;
- wrapper = StringUtils.isNotBlank(reservationName) ? wrapper.like(Order::getReservationName, reservationName) : wrapper;
- wrapper = StringUtils.isNotBlank(reservationPhone) ? wrapper.like(Order::getReservationPhone, reservationPhone) : wrapper;
- wrapper = null != state ? wrapper.eq(Order::getState, state) : wrapper;
- wrapper = StringUtils.isNotBlank(workerName) ? wrapper.like(Order::getServerName, workerName) : wrapper;
- wrapper = StringUtils.isNotBlank(workerPhone) ? wrapper.like(Order::getServerPhone, workerPhone) : wrapper;
- wrapper = null != orderTime ? wrapper.eq(Order::getCreateTime, orderTime) : wrapper;
- wrapper = null != time ? wrapper.eq(Order::getTime, time) : wrapper;
- wrapper = StringUtils.isNotBlank(serveName) ? wrapper.like(Order::getServeName, serveName) : wrapper;
- // 基础查询
- return wrapper.eq(Order::getIsDelete, 0).orderByDesc(Order::getCreateTime).page(page);
- }
-
- @Override
public OrderDetailVO orderListDetail(String id) {
OrderDetailVO result = new OrderDetailVO();
- Order order = this.getById(id);
+ com.ruoyi.order.api.entity.Order order = orderClient.detail(id).getData();
orderInfo(result, order);
// 预约人信息
userInfo(result, order);
@@ -187,93 +124,141 @@
return result;
}
- private void evaluateInfo(OrderDetailVO result, Order order) {
- Evaluate evaluate = evaluateService.lambdaQuery().eq(Evaluate::getOrderId, order.getId())
- .eq(Evaluate::getIsDelete, 0).one();
+ private void evaluateInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
+ com.ruoyi.order.api.entity.Evaluate evaluate = evaluateClient.oneByOrderId(order.getId()).getData();
OrderByEvaluateVO orderByEvaluate = new OrderByEvaluateVO();
- orderByEvaluate.setStarRating(evaluate.getStarRating());
- orderByEvaluate.setEvaluateTime(evaluate.getCreateTime());
- orderByEvaluate.setEvaluateContent(evaluate.getContent());
+ if (null != evaluate) {
+ orderByEvaluate.setStarRating(BigDecimal.valueOf(evaluate.getStarRating()));
+ orderByEvaluate.setEvaluateTime(evaluate.getCreateTime());
+ orderByEvaluate.setEvaluateContent(evaluate.getContent());
+ }
result.setEvaluateInfo(orderByEvaluate);
}
- private void serveRecordInfo(OrderDetailVO result, Order order) {
- ServeRecord serveRecord = serveRecordService.lambdaQuery().eq(ServeRecord::getOrderId, order.getId())
- .eq(ServeRecord::getIsDelete, 0).one();
- if (null == serveRecord) {
- throw new GlobalException("服务记录信息异常,请重试");
- }
- // 师傅路线轨迹
- List<ServeCoordinate> serveCoordinateList = serveCoordinateService.lambdaQuery().eq(ServeCoordinate::getWorkerId, order.getServerId())
- .eq(ServeCoordinate::getIsDelete, 0).orderByDesc(ServeCoordinate::getCreateTime).list();
+ private void serveRecordInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
OrderByServeRecordVO orderByServeRecord = new OrderByServeRecordVO();
orderByServeRecord.setAcceptOrderTime(order.getAcceptTime());
- orderByServeRecord.setReachTime(order.getTime());
- orderByServeRecord.setCoordinate(serveCoordinateList.stream().map(ServeCoordinate::getCoordinate).collect(Collectors.toList()));
- orderByServeRecord.setPhoto(Arrays.stream(serveRecord.getPhoto().split(",")).collect(Collectors.toList()));
+ if (null != order.getArriveTime()) {
+ orderByServeRecord.setReachTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(order.getArriveTime()));
+ }
+ // 服务记录 包含现场照片
+ ServeRecord serveRecord = serveRecordClient.serveRecordByOrderId(order.getId()).getData();
+ // 师傅路线轨迹
+ String masterFolderPath = BASE_PATH + order.getServerId();
+ File masterFolder = new File(masterFolderPath);
+ // 检查师傅ID的文件夹是否存在,存在就读取轨迹数据
+ System.out.println("文件是否存在:" + masterFolder.exists());
+ if (masterFolder.exists()) {
+ // 检查订单ID的JSON文件是否存在,不存在则创建
+ String jsonFilePath = masterFolderPath + "/" + order.getId() + ".json";
+ File jsonFile = new File(jsonFilePath);
+ System.out.println("订单Json文件是否存在:" + jsonFile.exists());
+ if (jsonFile.exists()) {
+ try {
+ String jsonContent = new String(Files.readAllBytes(Paths.get(jsonFilePath)));
+ System.out.println("JSON 文件内容:" + jsonContent);
+ List<JSONObject> coordinate = JSONObject.parseObject(jsonContent, List.class);
+ List<String> coordinateList = new ArrayList<>();
+ if (null != coordinate) {
+ for (JSONObject jsonObject : coordinate) {
+ Object s = jsonObject.get("coordinate");
+ coordinateList.add(String.valueOf(s));
+ }
+ orderByServeRecord.setCoordinate(coordinateList);
+ }
+ } catch (IOException e) {
+ System.out.println(e.getMessage());
+ }
+ }
+ }
+ if (null != serveRecord) {
+ orderByServeRecord.setPhoto(Arrays.stream(serveRecord.getPhoto().split(",")).collect(Collectors.toList()));
+ orderByServeRecord.setCardPic(serveRecord.getCardPic());
+ orderByServeRecord.setPaperPic(serveRecord.getPaperPic());
+ orderByServeRecord.setMachinePic(serveRecord.getMachinePic());
+ }
result.setServeRecordInfo(orderByServeRecord);
}
- private void workerInfo(OrderDetailVO result, Order order) {
+ private void workerInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
MasterWorker worker = masterWorkerService.getById(order.getServerId());
- if (null == worker) {
- throw new GlobalException("服务人员信息异常,请重试");
- }
OrderByWorkerVO orderByWorker = new OrderByWorkerVO();
- orderByWorker.setProfilePicture(worker.getProfilePicture());
- orderByWorker.setName(worker.getRealName());
- orderByWorker.setPhone(worker.getPhone());
- orderByWorker.setSex(worker.getSex());
+ if (null != worker) {
+ orderByWorker.setProfilePicture(worker.getProfilePicture());
+ orderByWorker.setName(worker.getRealName());
+ orderByWorker.setPhone(worker.getPhone());
+ orderByWorker.setSex(worker.getSex());
+ } else {
+ orderByWorker.setName(order.getServerName());
+ orderByWorker.setPhone(order.getServerPhone());
+ }
result.setWorkerInfo(orderByWorker);
}
- private void serveInfo(OrderDetailVO result, Order order) {
+ private void serveInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
RecoveryServe recoveryServe = recoveryServeService.getById(order.getServeId());
- if (null == recoveryServe) {
- throw new GlobalException("回收服务信息异常,请重试");
- }
- RecoveryClassify recoveryClassify = recoveryClassifyService.getById(recoveryServe.getClassifyId());
- if (null == recoveryClassify) {
- throw new GlobalException("回收服务分类信息异常,请重试");
- }
OrderByServeVO orderByServe = new OrderByServeVO();
- orderByServe.setServeName(recoveryServe.getServeName());
- orderByServe.setSupClassify(recoveryClassify.getSupClassify());
- orderByServe.setSubClassify(recoveryClassify.getSubClassify());
+ if (null != recoveryServe) {
+ RecoveryClassify recoveryClassify = recoveryClassifyService.getById(recoveryServe.getClassifyId());
+ orderByServe.setServeName(recoveryServe.getServeName());
+ orderByServe.setCover(recoveryServe.getCover());
+ if (null != recoveryClassify) {
+ orderByServe.setSupClassify(recoveryClassify.getSupClassify());
+ orderByServe.setSubClassify(recoveryClassify.getSubClassify());
+ }
+ } else {
+ orderByServe.setServeName(order.getServeName());
+ }
orderByServe.setPrice(order.getServePrice());
+ orderByServe.setSubsidy(order.getSubsidy());
result.setServeInfo(orderByServe);
}
- private void orderInfo(OrderDetailVO result, Order order) {
- if (null == order) {
- throw new GlobalException("订单信息异常,请重试");
- }
+ private void orderInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
// 订单信息
OrderInfoVO orderInfo = new OrderInfoVO();
- orderInfo.setOrderNumber(order.getOrderNumber());
- orderInfo.setPlaceOrderTime(order.getTime());
- orderInfo.setState(order.getState());
+ if (null != order) {
+ orderInfo.setOrderNumber(order.getOrderNumber());
+ orderInfo.setPlaceOrderTime(order.getCreateTime());
+ orderInfo.setState(order.getState());
+ orderInfo.setRemark(order.getRemark());
+ orderInfo.setCompleteTime(order.getCompleteTime());
+ orderInfo.setReservationRemark(order.getReservationRemark());
+ // 查询通话录音
+ List<OrderRecording> orderRecordingList = orderRecordingMapper.selectList(Wrappers.lambdaQuery(OrderRecording.class)
+ .eq(OrderRecording::getOrderId, order.getId()));
+ orderInfo.setOrderRecordingList(orderRecordingList);
+ }
result.setOrderInfo(orderInfo);
}
- private void userInfo(OrderDetailVO result, Order order) {
+ private void userInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
Integer userId = order.getUserId();
User user = userMapper.selectById(userId);
- if (null == user) {
- throw new GlobalException("预约人信息异常,请重试");
- }
OrderByUserInfoVO orderByUserInfo = new OrderByUserInfoVO();
- orderByUserInfo.setProfilePicture(user.getProfilePicture());
- orderByUserInfo.setUserNumber(user.getUserNo());
+ if (null != user) {
+ orderByUserInfo.setProfilePicture(user.getProfilePicture());
+ orderByUserInfo.setUserNumber(user.getUserNo());
+ }
orderByUserInfo.setReservationName(order.getReservationName());
orderByUserInfo.setReservationPhone(order.getReservationPhone());
- orderByUserInfo.setReservationAddress(order.getReservationAddress());
+ if (order.getAddress()!=null) {
+ orderByUserInfo.setReservationAddress(order.getReservationAddress() + order.getAddress());
+ }else {
+ orderByUserInfo.setReservationAddress(order.getReservationAddress());
+ }
orderByUserInfo.setTime(order.getTime());
result.setUserInfo(orderByUserInfo);
}
-
+ /**
+ * 订单id列表
+ *
+ * @param orderQueryRequest 订单列表查询参数
+ * @return 订单id列表
+ */
@Override
- public IPage<OrderCountVO> orderCount(String name, String phone, Page<OrderCountVO> page) {
- return baseMapper.orderCount(name, phone, page);
+ public List<String> queryIdList(OrderQueryRequest orderQueryRequest) {
+ List<String> data = orderClient.queryPage1(orderQueryRequest).getData();
+ return data;
}
}
--
Gitblit v1.7.1