diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java index 8cc1bc4f..f857d54a 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java @@ -577,20 +577,20 @@ public class OrderController extends BaseController { if (orderMasterService.isAllAssign(om.getId())) { Set workIds = orderDetailService.selectByOrderMasterId(om.getId()).stream() .map(OrderDetail::getWorkerId).collect(Collectors.toSet()); - if (workIds.size() == 1 && workIds.contains(om.getWorkerId())) { - // 派完单 并且只有自己接单 + if (workIds.size() > 1 || !workIds.contains(om.getWorkerId())) { + // 派完单 并且有其他师傅接单(监控单) om2up.setHasDispatchedAll(1); om2up.setAllSelfAssigned(1); + om2up.setOrderStatus(OrderStatus.PLAIN.code()); + } else { + // 派完单 但是只有自己接单 + om2up.setHasDispatchedAll(1); + om2up.setAllSelfAssigned(0); if (request.getIsQuicklyDelivery() != null && request.getIsQuicklyDelivery() == 1) { om2up.setOrderStatus(OrderStatus.SERVER.code()); } else { om2up.setOrderStatus(OrderStatus.GOING.code()); } - } else { - // 派完单 但是有其他师傅接单 - om2up.setHasDispatchedAll(1); - om2up.setAllSelfAssigned(0); - om2up.setOrderStatus(OrderStatus.PLAIN.code()); } } else { // 未派完单 @@ -2306,7 +2306,6 @@ public class OrderController extends BaseController { if (accessoryOrderMaster == null) { return AjaxResult.error("主单不存在"); } - // 判断是否为配件订单 if (accessoryOrderMaster.getOrderType() == null || accessoryOrderMaster.getOrderType() != 1) { return AjaxResult.error("当前订单不是配件订单,无法生成服务订单"); @@ -2317,9 +2316,8 @@ public class OrderController extends BaseController { return AjaxResult.error("该配件订单已经派发过服务订单,不能重复操作"); } - Goods goods = goodsService.selectById(accessoryOrderMaster.getGoodsId()); - Shop goodsShop = shopService.getShop(goods.getShopId()); - String phone = goodsShop.getPhone(); + Worker worker = workerService.selectById(accessoryOrderMaster.getWorkerId()); + String phone = worker.getPhone(); // 获取服务店铺信息 Shop serviceShop = shopService.getShop(serviceShopId); @@ -2327,6 +2325,9 @@ public class OrderController extends BaseController { return AjaxResult.error("服务店铺不存在"); } + accessoryOrderMaster.setServiceShopId(serviceShopId); + orderMasterService.updateOrderMaster(accessoryOrderMaster); + // 获取服务店铺的师傅信息(创建店铺的师傅) Worker serviceWorker = workerService.selectById(serviceShop.getWorkerId()); if (serviceWorker == null) { diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java index af7c6be4..135163d6 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java @@ -1008,11 +1008,20 @@ public class OrderMasterController extends BaseController { // orderMaster.setOrderStatuses(); // } List list = orderMasterService.selectOrderMasterList(orderMaster); + + // 处理orderType为0的情况,额外查询原师傅ID相关的订单并添加到list中 OrderMaster origiOrderMaster = new OrderMaster(); - if (orderMaster.getOrderType() == 0) { + if (orderMaster.getOrderType() == 0 && orderMaster.getWorkerId() != null + && orderMaster.getWorkerId() != -1 && orderMaster.getIsMonitoredOrder() == true) { origiOrderMaster.setOriginalWorkerId(orderMaster.getWorkerId()); List originalList = orderMasterService.selectOrderMasterList(origiOrderMaster); list.addAll(originalList); + list.sort((o1, o2) -> { + if (o1.getUpdateTimeAlias() == null && o2.getUpdateTimeAlias() == null) return 0; + if (o1.getUpdateTimeAlias() == null) return 1; + if (o2.getUpdateTimeAlias() == null) return -1; + return o2.getUpdateTimeAlias().compareTo(o1.getUpdateTimeAlias()); + }); } if (CollectionUtils.isEmpty(list)) { @@ -1075,17 +1084,17 @@ public class OrderMasterController extends BaseController { // 商品规格及信息 List orderStandardList = orderGoodsService.selectByOrderMasterId(master.getId()); Goods goods = new Goods(); - if (orderStandardList.size() > 0) { - // 商品信息 - GoodsStandard goodsStandard = goodsStandardService - .selectById(orderStandardList.get(0).getGoodsStandardId()); - if (goodsStandard != null) { - goods = goodsService.selectById(goodsStandard.getGoodsId()); - } - } else { - // 优化4:使用预查询的商品信息 - goods = goodsMap.getOrDefault(master.getGoodsId(), new Goods()); - } +// if (orderStandardList.size() > 0) { +// // 商品信息 +// GoodsStandard goodsStandard = goodsStandardService +// .selectById(orderStandardList.get(0).getGoodsStandardId()); +// if (goodsStandard != null) { +// goods = goodsService.selectById(goodsStandard.getGoodsId()); +// } +// } else { + // 优化4:使用预查询的商品信息 + goods = goodsMap.getOrDefault(master.getGoodsId(), new Goods()); +// } // 填充商品三级类目 if (goods.getDeptGoodsCategoryId() != null) { @@ -1096,6 +1105,8 @@ public class OrderMasterController extends BaseController { .selectOneByGoodsCategoryId(goods.getDeptGoodsCategoryId()); if (deptGoodsCategory != null) { categoryId = deptGoodsCategory.getGoodsCategoryId(); + } else { + categoryId = goods.getDeptGoodsCategoryId(); } } else { DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.get(goods.getDeptGoodsCategoryId()); @@ -1917,6 +1928,7 @@ public class OrderMasterController extends BaseController { Shop shop = shopService.getShop(goods.getShopId()); Shop serviceShop = shopService.getShop(orderMaster.getServiceShopId()); shop = calculateShopDistance(orderMaster, shop); + serviceShop = calculateShopDistance(orderMaster, serviceShop); // 编辑返回属性 orderListResponse.setDeliveryType(orderMaster.getDeliveryType()); orderListResponse.setDeliveryRemark(orderMaster.getDeliveryRemark()); @@ -2427,7 +2439,7 @@ public class OrderMasterController extends BaseController { /** * 服务订单退单时,退还服务金额给商品订单 - * + * * @param goodsOrderMasterId 商品订单主单ID * @param serverGoodsMoney 需要退还的服务金额 */ @@ -2640,7 +2652,7 @@ public class OrderMasterController extends BaseController { /** * 计算商家与主单地址之间的距离 - * + * * @param orderMaster 主单信息 * @param shop 商家信息 * @return 带有距离信息的商家对象 @@ -2648,7 +2660,7 @@ public class OrderMasterController extends BaseController { private Shop calculateShopDistance(OrderMaster orderMaster, Shop shop) { try { // 直接使用主单地址获取经纬度 - logger.info("使用主单地址获取经纬度"); + logger.info("使用主单地址获取经纬度,主单id{}", orderMaster.getId()); StringBuilder fullAddress = new StringBuilder(); diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java index bf01a2fa..5b0eb7a1 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java @@ -342,4 +342,15 @@ public class OrderMaster extends BaseEntity { */ @Excel(name = "分账倒计时时长", cellType = Excel.ColumnType.NUMERIC) private Integer shareAccountCountdownDuration; + + /** + * 是否包含原始工人ID查询(用于orderType=0的情况) + */ + private Boolean includeOriginalWorker; + + /** + * 更新时间别名字段(用于SQL查询中的update_time别名映射) + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTimeAlias; } diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java index 7cace753..693392fb 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java @@ -47,6 +47,14 @@ public interface OrderDetailMapper { */ List selectByOrderMasterId(@Param("orderMasterId") Long orderMasterId); + /** + * 根据主订单ID集合批量查询详细订单 + * + * @param orderMasterIds 主订单ID集合 + * @return 详细订单集合 + */ + List selectByOrderMasterIds(@Param("orderMasterIds") List orderMasterIds); + /** * 批量删除细单表信息 * diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderGoodsMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderGoodsMapper.java index e1882ba3..4cbf286b 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderGoodsMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderGoodsMapper.java @@ -35,6 +35,14 @@ public interface OrderGoodsMapper { List selectByOrderId(@Param("orderId") Long orderId); + /** + * 根据主订单ID集合批量查询订单商品 + * + * @param orderMasterIds 主订单ID集合 + * @return 订单商品集合 + */ + List selectByOrderMasterIds(@Param("orderMasterIds") List orderMasterIds); + List selectByOrderDetailId(@Param("orderDetailId") Long orderDetailId); int deleteByOrderDetailId(@Param("orderDetailId") Long orderDetailId); diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java index b9d9ad48..ed03e142 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java @@ -48,6 +48,13 @@ public interface OrderDetailService { */ List selectByOrderMasterId(Long orderMasterId); + /** + * 根据主订单ID集合批量查询详细订单 + * @param orderMasterIds 主订单ID集合 + * @return 详细订单集合 + */ + List selectByOrderMasterIds(List orderMasterIds); + /** * @param ids 详细订单ids * @return 删除结果 diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderGoodsService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderGoodsService.java index f86db39a..c8523e9b 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderGoodsService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderGoodsService.java @@ -19,6 +19,14 @@ public interface OrderGoodsService { List selectByOrderMasterId(Long orderMasterId); + /** + * 根据主订单ID集合批量查询订单商品 + * + * @param orderMasterIds 主订单ID集合 + * @return 订单商品集合 + */ + List selectByOrderMasterIds(List orderMasterIds); + List selectByOrderDetailId(Long orderDetailId); /** diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index a67f6e57..7e385889 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -274,6 +274,14 @@ public class OrderDetailServiceImpl implements OrderDetailService { return orderDetailMapper.selectByOrderMasterId(orderMasterId); } + @Override + public List selectByOrderMasterIds(List orderMasterIds) { + if (CollectionUtils.isEmpty(orderMasterIds)) { + return Collections.emptyList(); + } + return orderDetailMapper.selectByOrderMasterIds(orderMasterIds); + } + @Override public int deleteOrderDetailByIds(String ids) { Long[] orderDetailIds = Convert.toLongArray(ids); diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderGoodsServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderGoodsServiceImpl.java index 1cdb9ea3..78a4bd9e 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderGoodsServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderGoodsServiceImpl.java @@ -30,6 +30,14 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { return orderGoodsMapper.selectByOrderId(orderMasterId); } + @Override + public List selectByOrderMasterIds(List orderMasterIds) { + if (orderMasterIds == null || orderMasterIds.isEmpty()) { + return new ArrayList<>(); + } + return orderGoodsMapper.selectByOrderMasterIds(orderMasterIds); + } + @Override public List selectByOrderDetailId(Long orderDetailId) { return orderGoodsMapper.selectByOrderDetailId(orderDetailId); diff --git a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml index 5245f967..4e1976cb 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml @@ -596,4 +596,12 @@ + + diff --git a/ghy-order/src/main/resources/mapper/order/OrderGoodsMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderGoodsMapper.xml index 6206b606..eb56b4d2 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderGoodsMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderGoodsMapper.xml @@ -133,4 +133,16 @@ + + diff --git a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml index 8a991cc1..a461a7cd 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml @@ -29,6 +29,7 @@ + @@ -99,6 +100,7 @@ create_by, create_time, update_time, + update_time as update_time_alias, remark, all_self_assigned, goods_id, @@ -166,6 +168,7 @@ om.create_by, om.create_time, om.update_time, + om.update_time as update_time_alias, om.remark, om.all_self_assigned, om.goods_id, @@ -295,6 +298,9 @@ AND om.original_worker_id = #{originalWorkerId} + + AND (om.worker_id = #{workerId} OR om.original_worker_id = #{workerId}) + AND om.pay_mode = #{payMode} diff --git a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java index 68c58a2c..5377e92d 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java +++ b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialChangeRecordMapper.java @@ -4,6 +4,7 @@ import com.ghy.payment.domain.FinancialChangeRecord; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Set; /** * @author clunt @@ -64,6 +65,14 @@ public interface FinancialChangeRecordMapper { List selectByMasterId(@Param("orderMasterId") Long orderMasterId); + /** + * 根据主订单ID集合批量查询改价记录 + * + * @param orderMasterIds 主订单ID集合 + * @return 改价记录集合 + */ + List selectByMasterIds(@Param("orderMasterIds") Set orderMasterIds); + int updatePayStatus(@Param("id") Long id, @Param("payStatus") Integer payStatus); /** diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialChangeRecordService.java b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialChangeRecordService.java index dab0b9c4..9eb74eae 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialChangeRecordService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialChangeRecordService.java @@ -67,6 +67,14 @@ public interface FinancialChangeRecordService { List selectByMasterId(@Param("orderMasterId") Long orderMasterId); + /** + * 根据主订单ID集合批量查询改价记录 + * + * @param orderMasterIds 主订单ID集合 + * @return 改价记录集合 + */ + List selectByMasterIds(Set orderMasterIds); + int updatePayStatus(Long id, Integer payStatus); /** diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java index f447aecf..574e381f 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialChangeRecordServiceImpl.java @@ -126,6 +126,14 @@ public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordSe return financialChangeRecordMapper.selectByMasterId(orderMasterId); } + @Override + public List selectByMasterIds(Set orderMasterIds) { + if (CollectionUtils.isEmpty(orderMasterIds)) { + return new ArrayList<>(); + } + return financialChangeRecordMapper.selectByMasterIds(orderMasterIds); + } + @Override public int updatePayStatus(Long id, Integer payStatus) { return financialChangeRecordMapper.updatePayStatus(id, payStatus); diff --git a/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml b/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml index 3bcd03ad..d99ce3d1 100644 --- a/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml +++ b/ghy-payment/src/main/resources/mapper/financial/FinancialChangeRecordMapper.xml @@ -164,4 +164,11 @@ update_time = NOW() WHERE id = #{id} + +