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 b6933ea6..307ab812 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 @@ -580,12 +580,14 @@ public class OrderController extends BaseController { if (workIds.size() > 1 || !workIds.contains(om.getWorkerId())) { // 派完单 并且有其他师傅接单(包含其他人,监控单需要显示) om2up.setHasDispatchedAll(1); - om2up.setAllSelfAssigned(1); // 1表示有其他师傅参与 + om2up.setAllSelfAssigned(0); // 保持原有含义:0表示有其他师傅参与 + om2up.setShowInMonitor(1); // 新字段:1表示显示在监控单 om2up.setOrderStatus(OrderStatus.PLAIN.code()); } else { // 派完单 但是只有自己接单(只有自己,监控单不显示) om2up.setHasDispatchedAll(1); - om2up.setAllSelfAssigned(0); // 0表示只有自己承接 + om2up.setAllSelfAssigned(1); // 保持原有含义:1表示只有自己承接 + om2up.setShowInMonitor(0); // 新字段:0表示不显示在监控单 if (request.getIsQuicklyDelivery() != null && request.getIsQuicklyDelivery() == 1) { om2up.setOrderStatus(OrderStatus.SERVER.code()); } else { @@ -593,10 +595,23 @@ public class OrderController extends BaseController { } } } else { - // 未派完单(还未完全派单,暂不显示在监控单) - om2up.setAllSelfAssigned(0); // 0表示未完成派单或只有自己 - om2up.setHasDispatchedAll(0); - om2up.setOrderStatus(OrderStatus.PLAIN.code()); + // 未派完单,但需要检查是否派给了非自己的师傅 + Set assignedWorkIds = orderDetailService.selectByOrderMasterId(om.getId()).stream() + .map(OrderDetail::getWorkerId).collect(Collectors.toSet()); + + if (assignedWorkIds.size() > 1 || (assignedWorkIds.size() == 1 && !assignedWorkIds.contains(om.getWorkerId()))) { + // 未派完单但派给了非自己的师傅,需要显示在监控单 + om2up.setAllSelfAssigned(0); // 保持原有含义:0表示有其他师傅参与 + om2up.setShowInMonitor(1); // 新字段:1表示显示在监控单 + om2up.setHasDispatchedAll(0); + om2up.setOrderStatus(OrderStatus.PLAIN.code()); + } else { + // 未派完单且只派给了自己或还没有派单,不显示在监控单 + om2up.setAllSelfAssigned(1); // 保持原有含义:1示未完成派单或只有自己 + om2up.setShowInMonitor(0); // 新字段:0表示不显示在监控单 + om2up.setHasDispatchedAll(0); + om2up.setOrderStatus(OrderStatus.PLAIN.code()); + } } orderMasterService.updateOrderMaster(om2up); logger.info("是否已经全部派完单{}", om2up); @@ -2422,23 +2437,25 @@ public class OrderController extends BaseController { logger.warn("配件订单[{}]未找到对应的财务主单,无法扣除服务金额", accessoryOrderMaster.getCode()); } - if (!CollectionUtils.isEmpty(serviceGoodsList)) { - Goods firstServiceGoods = serviceGoodsList.get(0); // 取第一个服务商品 + // 获取配件订单的商品信息 + List accessoryOrderGoodsList = orderGoodsService.selectByOrderMasterId(accessoryOrderMaster.getId()); + if (!CollectionUtils.isEmpty(accessoryOrderGoodsList)) { + OrderGoods firstAccessoryGoods = accessoryOrderGoodsList.get(0); // 取第一个配件商品 OrderGoods serviceOrderGoods = new OrderGoods(); serviceOrderGoods.setOrderId(serviceOrderMaster.getId()); - serviceOrderGoods.setGoodsStandardId(firstServiceGoods.getDeptGoodsCategoryId()); // 用标准ID - serviceOrderGoods.setGoodsName(firstServiceGoods.getGoodsName()); - serviceOrderGoods.setGoodsNum(1); // 数量为1 - serviceOrderGoods.setRemark("由配件订单自动生成的服务商品,服务金额:" + serviceMoney); + serviceOrderGoods.setGoodsStandardId(firstAccessoryGoods.getGoodsStandardId()); // 使用配件商品的标准ID + serviceOrderGoods.setGoodsName(firstAccessoryGoods.getGoodsName()); // 使用配件商品的名称 + serviceOrderGoods.setGoodsNum(firstAccessoryGoods.getGoodsNum()); // 使用配件商品的数量 + serviceOrderGoods.setRemark("由配件订单[" + accessoryOrderMaster.getCode() + "]自动生成的服务商品,服务金额:" + serviceMoney); serviceOrderGoods.setCreateTime(new Date()); // 保存OrderGoods orderGoodsService.insertOrderGoods(serviceOrderGoods); - logger.info("为服务订单[{}]生成服务商品[{}],商品ID:{},金额:{}", - serviceOrderMaster.getCode(), firstServiceGoods.getGoodsName(), - firstServiceGoods.getGoodsId(), serviceMoney); + logger.info("为服务订单[{}]生成服务商品[{}],商品标准ID:{},数量:{},金额:{}", + serviceOrderMaster.getCode(), firstAccessoryGoods.getGoodsName(), + firstAccessoryGoods.getGoodsStandardId(), firstAccessoryGoods.getGoodsNum(), serviceMoney); } else { - logger.warn("服务店铺[{}]没有找到服务商品,无法生成OrderGoods", serviceShopId); + logger.warn("配件订单[{}]没有找到商品信息,无法生成OrderGoods", accessoryOrderMaster.getCode()); } // 更新配件主单,关联生成的服务订单并标记已派发服务订单 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 9bb280ea..230ade85 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 @@ -1982,6 +1982,7 @@ public class OrderMasterController extends BaseController { orderListResponse.setShop(shop); orderListResponse.setServiceShop(serviceShop); + orderListResponse.setOriginalWorkerId(goodsOrderMaster != null ? goodsOrderMaster.getWorkerId() : null); orderListResponse.setGoodsOrderMasterId(orderMaster.getGoodsOrderMasterId()); orderListResponse.setGoods(goods); orderListResponse.setTrackingNumber(orderMaster.getTrackingNumber()); 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 5b0eb7a1..06fde688 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 @@ -348,6 +348,12 @@ public class OrderMaster extends BaseEntity { */ private Boolean includeOriginalWorker; + /** + * 是否显示在监控单:0=不显示,1=显示在监控单 + */ + @Excel(name = "是否显示在监控单", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=不显示,1=显示在监控单") + private Integer showInMonitor; + /** * 更新时间别名字段(用于SQL查询中的update_time别名映射) */ diff --git a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml index b7588e0a..ed24931f 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml @@ -73,6 +73,7 @@ + @@ -143,7 +144,8 @@ worker_remark, after_service_status, share_account_countdown_end_time, - share_account_countdown_duration + share_account_countdown_duration, + show_in_monitor FROM order_master @@ -213,7 +215,8 @@ om.worker_remark, om.after_service_status, om.share_account_countdown_end_time, - om.share_account_countdown_duration + om.share_account_countdown_duration, + om.show_in_monitor FROM order_master om LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id LEFT JOIN goods g ON g.goods_id = om.goods_id @@ -250,7 +253,7 @@ AND ca.country_id = #{district} - AND om.all_self_assigned = 1 AND om.order_status in (0,1,2,3,4) and om.worker_id is not null + AND om.show_in_monitor = 1 AND om.order_status in (0,1,2,3,4) and om.worker_id is not null AND all_self_assigned = #{allSelfAssigned} @@ -399,7 +402,7 @@ LEFT JOIN financial_master fm ON om.id = fm.order_master_id - AND om.all_self_assigned = 1 AND om.order_status in (1,2,3,4) + AND om.show_in_monitor = 1 AND om.order_status in (1,2,3,4) AND all_self_assigned = #{allSelfAssigned} @@ -511,6 +514,7 @@ update_by = #{updateBy}, all_self_assigned = #{allSelfAssigned}, all_self_assigned = null, + show_in_monitor = #{showInMonitor}, has_dispatched_all = #{hasDispatchedAll}, is_call = #{isCall}, is_charge = #{isCharge},