From 08e5353b4eec1b05a5db88348c9f3a083d525915 Mon Sep 17 00:00:00 2001 From: cb <275647614@qq.com> Date: Wed, 3 Sep 2025 10:38:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=95=86=E5=93=81=E7=B1=BB?= =?UTF-8?q?=E7=9B=AE=E6=B2=A1=E6=9C=89=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=A2=E6=88=B7=E6=98=AF=E5=90=A6=E5=90=8C?= =?UTF-8?q?=E6=84=8F=E4=B8=8A=E9=97=A8=E9=87=8D=E5=81=9A=E6=96=B9=E6=A1=88?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=B8=88=E5=82=85=E9=87=8D=E5=81=9A?= =?UTF-8?q?/=E8=A1=A5=E5=81=9A=E5=AE=8C=E6=88=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/order/OrderController.java | 207 ++++++++++-------- .../order/OrderMasterController.java | 19 +- .../ghy/order/domain/AfterServiceRecord.java | 20 +- .../impl/AfterServiceRecordServiceImpl.java | 24 ++ .../mapper/order/AfterServiceRecordMapper.xml | 19 +- 5 files changed, 190 insertions(+), 99 deletions(-) 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 046890d6..9c1d272e 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 @@ -119,6 +119,7 @@ public class OrderController extends BaseController { @Resource private ShopService shopService; + @GetMapping("/imgs") public String orderImgs(Long orderId, ModelMap mmap) { mmap.put("orderId", orderId); @@ -425,14 +426,14 @@ public class OrderController extends BaseController { od.setOrderMasterCode(om.getCode()); od.setCustomerId(om.getCustomerId()); od.setOrderType(om.getOrderType()); - if (request.getIsQuicklyDelivery()!=null&&request.getIsQuicklyDelivery()==1){ + if (request.getIsQuicklyDelivery() != null && request.getIsQuicklyDelivery() == 1) { od.setOrderStatus(OrderStatus.SERVER.code()); - + // 立即发货时,计算确认截止时间并设置到confirmStartTime字段 Date now = new Date(); long waitTimeMillis; String logType; - + // 根据发货类型判断等待时间 if (om.getDeliveryType() != null) { if (om.getDeliveryType() == 2 || om.getDeliveryType() == 3) { @@ -449,18 +450,18 @@ public class OrderController extends BaseController { logType = "未知类型(默认8小时)"; logger.warn("订单[{}]发货类型未知[{}],使用默认8小时", od.getCode(), om.getDeliveryType()); } - + // 计算确认截止时间 Date confirmDeadlineTime = new Date(now.getTime() + waitTimeMillis); od.setConfirmStartTime(confirmDeadlineTime); - - logger.info("立即发货订单[{}]发货类型[{}],确认截止时间:{}", - od.getCode(), logType, - com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", confirmDeadlineTime)); + + logger.info("立即发货订单[{}]发货类型[{}],确认截止时间:{}", + od.getCode(), logType, + com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", confirmDeadlineTime)); } else { logger.warn("订单[{}]发货类型为null,未设置确认截止时间", od.getCode()); } - }else{ + } else { od.setOrderStatus(request.getWorkerId().equals(om.getWorkerId()) ? OrderStatus.GOING.code() : OrderStatus.RECEIVE.code()); } od.setWorkerId(request.getWorkerId()); @@ -480,7 +481,7 @@ public class OrderController extends BaseController { orderGoods.setGoodsName(goodsStandard.getGoodsStandardName()); orderGoods.setOrderDetailId(od.getId()); orderGoods.setServerGoodsNum(0); - // orderGoods.setOrderId(om.getId()); + // orderGoods.setOrderId(om.getId()); orderGoodsService.insertOrderGoods(orderGoods); }); @@ -514,9 +515,9 @@ public class OrderController extends BaseController { // 派完单 并且只有自己接单 om2up.setHasDispatchedAll(1); om2up.setAllSelfAssigned(1); - if (request.getIsQuicklyDelivery()!=null&&request.getIsQuicklyDelivery()==1){ + if (request.getIsQuicklyDelivery() != null && request.getIsQuicklyDelivery() == 1) { om2up.setOrderStatus(OrderStatus.SERVER.code()); - }else{ + } else { om2up.setOrderStatus(OrderStatus.GOING.code()); } } else { @@ -576,7 +577,7 @@ public class OrderController extends BaseController { } // 计算商品费用 BigDecimal totalPay = goodsService.calculate(appGoodsList); - logger.info("获取到的商品:{},计算的商品价值{}",appGoodsList,totalPay); + logger.info("获取到的商品:{},计算的商品价值{}", appGoodsList, totalPay); // 所有商品的ID Set goodsStandardIds = appGoodsList.stream().map(AppGoodsRequest::getGoodsStandardId).collect(Collectors.toSet()); // 所有商品 @@ -589,16 +590,16 @@ public class OrderController extends BaseController { OrderMaster orderMaster = new OrderMaster(); orderMaster.setOrderType(0); // 判断是否是配件商品 - if (goods.getType() != null && goods.getType() == 2) { - // 配件商品,需要获取对应的服务商品 - orderMaster.setOrderType(1); - } + if (goods.getType() != null && goods.getType() == 2) { + // 配件商品,需要获取对应的服务商品 + orderMaster.setOrderType(1); + } // // 通过商品的类目ID获取类目信息 // DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.selectOneByGoodsCategoryId(goods.getDeptGoodsCategoryId()); // if (deptGoodsCategory != null && deptGoodsCategory.getServiceCategoryId() != null) { // logger.info("配件商品的服务类目ID: {}", deptGoodsCategory.getServiceCategoryId()); - + // // 通过服务类目ID查询对应的服务商品 // Goods serviceGoodsQuery = new Goods(); // serviceGoodsQuery.setDeptGoodsCategoryId(deptGoodsCategory.getServiceCategoryId()); @@ -609,7 +610,7 @@ public class OrderController extends BaseController { // Goods serviceGoods = serviceGoodsList.get(0); // 取第一个服务商品 // logger.info("找到对应的服务商品: {}", serviceGoods); // orderMaster.setServerGoodsId(serviceGoods.getGoodsId()); - + // // 设置服务店铺ID // if (serviceGoods.getShopId() != null) { // orderMaster.setServiceShopId(serviceGoods.getShopId()); @@ -681,7 +682,7 @@ public class OrderController extends BaseController { orderMaster.setInsuranceId(manager.getId()); } } - logger.info("是否有保险金额{}",payMoney); + logger.info("是否有保险金额{}", payMoney); orderMasterService.insertOrderMaster(orderMaster); Assert.notNull(orderMaster.getId(), "OrderMaster.id is null!"); @@ -728,7 +729,6 @@ public class OrderController extends BaseController { logger.error(e.getMessage(), e); } - return AjaxResult.success(orderMaster); } @@ -767,7 +767,7 @@ public class OrderController extends BaseController { .add(goodsStandard.getGoodsPrice().multiply(BigDecimal.valueOf(Double.parseDouble(deptGoodsCategory.getRetainRate())))); } } - // logger.info("一二三级平台节流扣点分别为【{}】【{}】【{}】【{}】[{}]",oneMoney,twoMoney,threeMoney,deptMoney,specialMoney); + // logger.info("一二三级平台节流扣点分别为【{}】【{}】【{}】【{}】[{}]",oneMoney,twoMoney,threeMoney,deptMoney,specialMoney); // 平台扣除保险 -- deptMoney = deptMoney.add(insuranceMoney); @@ -1062,11 +1062,11 @@ public class OrderController extends BaseController { OrderDetail orderDetailReq = new OrderDetail(); BeanUtils.copyProperties(orderListRequest, orderDetailReq); List list = orderDetailService.selectOrderDetailList(orderDetailReq); - long size= list.stream() + long size = list.stream() .filter(order -> order.getOrderStatus() != 6) // 先过滤状态不等于6的订单 .filter(order -> order.getOrderStatus() != 5).count(); count += size; - logger.info("子单超时数量{}",count); + logger.info("子单超时数量{}", count); List allList = new ArrayList<>(); List masterIdSet = new ArrayList(); if (orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1) { @@ -1084,10 +1084,10 @@ public class OrderController extends BaseController { .map(OrderMaster::getId) // 再提取id .collect(Collectors.toList()) ); - if (CollectionUtils.isEmpty(countParam.getMasterIds())){ + if (CollectionUtils.isEmpty(countParam.getMasterIds())) { return count; } - logger.info("符合条件的主单超时参数{},count{}",countParam,count); + logger.info("符合条件的主单超时参数{},count{}", countParam, count); List orderDetails = orderDetailService.selectOrderDetailList(countParam); List result = orderDetails.stream().filter(s -> s.getTimeout().equals(1)).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(result)) { @@ -1107,9 +1107,9 @@ public class OrderController extends BaseController { orderMasterReq.setExceptOrderMasterIds(masterIdSet); List masterList = orderMasterService.selectOrderMasterList(orderMasterReq); allList.addAll(masterList); - List mateIds=allList.stream().map(OrderMaster::getId) + List mateIds = allList.stream().map(OrderMaster::getId) .collect(Collectors.toList()); - logger.info("查询符合条件的主单条件{}总数{}allList的数量{}allist的主单id{}",orderMasterReq,count,allList.size(),mateIds); + logger.info("查询符合条件的主单条件{}总数{}allList的数量{}allist的主单id{}", orderMasterReq, count, allList.size(), mateIds); // 超时查询需要排除同个师傅的主单子单同时出现 if (orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1) { // 需要排除同个师傅的主单子单同时出现 @@ -1132,23 +1132,23 @@ public class OrderController extends BaseController { break; } } - logger.info("主单id{},子单数据{},{}",master.getId(),CollectionUtils.isEmpty(tmpDetailListOfMasters),isKeep); - if (isKeep||CollectionUtils.isEmpty(tmpDetailListOfMasters)) { + logger.info("主单id{},子单数据{},{}", master.getId(), CollectionUtils.isEmpty(tmpDetailListOfMasters), isKeep); + if (isKeep || CollectionUtils.isEmpty(tmpDetailListOfMasters)) { filteredMasterList.add(master); } } count += filteredMasterList.size(); - mateIds=filteredMasterList.stream().map(OrderMaster::getId) + mateIds = filteredMasterList.stream().map(OrderMaster::getId) .collect(Collectors.toList()); - logger.info("主单filteredMasterList超时数量{}总数{},filteredMasterList的id集合{}",filteredMasterList.size(),count,mateIds); - if (CollectionUtils.isEmpty(filteredMasterList)){ + logger.info("主单filteredMasterList超时数量{}总数{},filteredMasterList的id集合{}", filteredMasterList.size(), count, mateIds); + if (CollectionUtils.isEmpty(filteredMasterList)) { count += masterList.size(); } } else { count += masterList.size(); } - logger.info("主单超时数量{}总数{}",masterList.size(),count); + logger.info("主单超时数量{}总数{}", masterList.size(), count); return count; } @@ -1160,7 +1160,7 @@ public class OrderController extends BaseController { public AjaxResult appMixOrderList(@RequestBody OrderListRequest orderListRequest) { List orderListResponses = new ArrayList<>(); - logger.info("查询不同订单的传入参数{}",orderListRequest); + logger.info("查询不同订单的传入参数{}", orderListRequest); // 校验参数 Assert.notNull(orderListRequest.getWorkerId(), "师傅id不能为空"); @@ -1226,13 +1226,13 @@ public class OrderController extends BaseController { // } else { orderListResponses.addAll(masterList); // } - logger.info("未处理的订单{}",orderListResponses); + logger.info("未处理的订单{}", orderListResponses); if (orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1) { - if (orderListResponses.size()>0){ - orderListResponses = orderListResponses.stream() - .filter(order -> order.getOrderStatus() != 5 && order.getOrderStatus() != 6) - .collect(Collectors.toList()); - } + if (orderListResponses.size() > 0) { + orderListResponses = orderListResponses.stream() + .filter(order -> order.getOrderStatus() != 5 && order.getOrderStatus() != 6) + .collect(Collectors.toList()); + } logger.info("处理已完成及已取消的订单: {}", orderListResponses); } // 查询新订单列表根据创建时间倒叙排列,查询其他根据更新时间倒序排列 @@ -1359,9 +1359,9 @@ public class OrderController extends BaseController { List orderStandardList = orderGoodsService.selectByOrderMasterId(master.getId()); // 商品信息 - GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); +// GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); - Goods goods = goodsService.selectById(goodsStandard.getGoodsId()); + Goods goods = goodsService.selectById(master.getGoodsId()); // 财务信息 FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(master.getId()); @@ -1426,8 +1426,8 @@ public class OrderController extends BaseController { // orderListResponse.setChangeMoney(totalChangeMoney); orderListResponse.setWorkerName(worker == null ? "" : worker.getName()); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); - orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName())?master.getName():customerAddress.getName()); - orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone())?master.getPhone():customerAddress.getPhone()); + orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName()) ? master.getName() : customerAddress.getName()); + orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone()) ? master.getPhone() : customerAddress.getPhone()); orderListResponse.setServerTime(master.getRevTime()); orderListResponse.setExpectTimeStart(master.getExpectTimeStart()); orderListResponse.setExpectTimeEnd(master.getExpectTimeEnd()); @@ -1497,9 +1497,9 @@ public class OrderController extends BaseController { List orderStandardList = orderGoodsService.selectByOrderDetailId(detail.getId()); // 商品信息 - GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); + // GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); - Goods goods = goodsService.selectById(goodsStandard.getGoodsId()); + Goods goods = goodsService.selectById(orderMaster.getGoodsId()); // 财务信息 FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(detail.getId()); @@ -1560,8 +1560,8 @@ public class OrderController extends BaseController { orderListResponse.setWorkerId(detail.getWorkerId()); orderListResponse.setWorkerName(workerName); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); - orderListResponse.setCustomerName(StringUtils.isNotEmpty(orderMaster.getName())?orderMaster.getName():customerAddress.getName()); - orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(orderMaster.getPhone())?orderMaster.getPhone():customerAddress.getPhone()); + orderListResponse.setCustomerName(StringUtils.isNotEmpty(orderMaster.getName()) ? orderMaster.getName() : customerAddress.getName()); + orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(orderMaster.getPhone()) ? orderMaster.getPhone() : customerAddress.getPhone()); orderListResponse.setOrderStatus(detail.getOrderStatus()); orderListResponse.setPayStatus(orderMaster.getPayStatus()); orderListResponse.setPayType(orderMaster.getPayType()); @@ -1622,9 +1622,9 @@ public class OrderController extends BaseController { List orderStandardList = orderGoodsService.selectByOrderMasterId(master.getId()); // 商品信息 - GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); +// GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); - Goods goods = goodsService.selectById(goodsStandard.getGoodsId()); + Goods goods = goodsService.selectById(master.getGoodsId()); // 填充商品三级类目 if (goods.getDeptGoodsCategoryId() != null) { Long categoryId = null; @@ -1702,7 +1702,7 @@ public class OrderController extends BaseController { || master.getOrderStatus() == 3 || master.getOrderStatus() == 4)) && master.getWorkerId() != null; - logger.info("是否为监控单{}主单id{}", condition,master); + logger.info("是否为监控单{}主单id{}", condition, master); // 编辑返回属性 orderListResponse.setIsNeedBill(master.getIsNeedBill()); orderListResponse.setIsMonitoredOrder(master.getIsMonitoredOrder()); @@ -1725,8 +1725,8 @@ public class OrderController extends BaseController { orderListResponse.setPayMoney(financialMaster.getPayMoney()); orderListResponse.setWorkerName(worker == null ? "" : worker.getName()); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); - orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName())?master.getName():customerAddress.getName()); - orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone())?master.getPhone():customerAddress.getPhone()); + orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName()) ? master.getName() : customerAddress.getName()); + orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone()) ? master.getPhone() : customerAddress.getPhone()); orderListResponse.setServerTime(master.getRevTime()); orderListResponse.setExpectTimeStart(master.getExpectTimeStart()); orderListResponse.setExpectTimeEnd(master.getExpectTimeEnd()); @@ -1737,7 +1737,7 @@ public class OrderController extends BaseController { orderListResponse.setPayType(master.getPayType()); orderListResponse.setOrderMasterCode(master.getCode()); orderListResponse.setStandardList(standardList); - + orderListResponse.setRemark(goods.getRemark()); orderListResponse.setCustomerRemark(master.getRemark()); orderListResponse.setTimeout(master.getTimeout()); @@ -1767,12 +1767,12 @@ public class OrderController extends BaseController { orderListResponse.setStreetId(master.getStreetId()); orderListResponse.setPhone(master.getPhone()); orderListResponse.setName(master.getName()); - orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName())?master.getName():customerAddress.getName()); - orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone())?master.getPhone():customerAddress.getPhone()); + orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName()) ? master.getName() : customerAddress.getName()); + orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone()) ? master.getPhone() : customerAddress.getPhone()); orderListResponse.setAddress(master.getAddress()); String addressSysArea = sysArea.getMergerName(); String[] array = addressSysArea.split(","); - if (StringUtils.isEmpty(master.getProvinceName())){ + if (StringUtils.isEmpty(master.getProvinceName())) { orderListResponse.setProvinceName(array[0]); orderListResponse.setCityName(array[1]); orderListResponse.setCountryName(array[2]); @@ -1903,8 +1903,8 @@ public class OrderController extends BaseController { orderListResponse.setWorkerName(worker.getName()); orderListResponse.setWorkerPhone(worker.getPhone()); orderListResponse.setWorkerId(detail.getWorkerId()); - orderListResponse.setCustomerName(StringUtils.isNotEmpty(orderMaster.getName())?orderMaster.getName():customerAddress.getName()); - orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(orderMaster.getPhone())?orderMaster.getPhone():customerAddress.getPhone()); + orderListResponse.setCustomerName(StringUtils.isNotEmpty(orderMaster.getName()) ? orderMaster.getName() : customerAddress.getName()); + orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(orderMaster.getPhone()) ? orderMaster.getPhone() : customerAddress.getPhone()); orderListResponse.setOrderStatus(detail.getOrderStatus()); orderListResponse.setPayStatus(orderMaster.getPayStatus()); orderListResponse.setPayType(orderMaster.getPayType()); @@ -1945,7 +1945,7 @@ public class OrderController extends BaseController { orderListResponse.setAddress(orderMaster.getAddress()); String addressSysArea = sysArea.getMergerName(); String[] array = addressSysArea.split(","); - if (StringUtils.isEmpty(orderMaster.getProvinceName())){ + if (StringUtils.isEmpty(orderMaster.getProvinceName())) { orderListResponse.setProvinceName(array[0]); orderListResponse.setCityName(array[1]); orderListResponse.setCountryName(array[2]); @@ -2015,50 +2015,60 @@ public class OrderController extends BaseController { Long orderMasterId = request.getId(); BigDecimal serviceMoney = request.getServerGoodsMoney(); Long serviceShopId = request.getServiceShopId(); - + // 校验参数 if (orderMasterId == null) { return AjaxResult.error("主单ID不能为空"); } - + if (serviceMoney == null || serviceMoney.compareTo(BigDecimal.ZERO) < 0) { return AjaxResult.error("服务金额不能为空且不能为负数"); } - + if (serviceShopId == null) { return AjaxResult.error("服务店铺ID不能为空"); } - + // 查询配件主单信息 OrderMaster accessoryOrderMaster = orderMasterService.selectById(orderMasterId); if (accessoryOrderMaster == null) { return AjaxResult.error("主单不存在"); } - + // 判断是否为配件订单 if (accessoryOrderMaster.getOrderType() == null || accessoryOrderMaster.getOrderType() != 1) { return AjaxResult.error("当前订单不是配件订单,无法生成服务订单"); } - + // 检查是否已经派发过服务订单 if (accessoryOrderMaster.getHasServiceOrder() != null && accessoryOrderMaster.getHasServiceOrder() == 1) { return AjaxResult.error("该配件订单已经派发过服务订单,不能重复操作"); } - + // 获取服务店铺信息 Shop serviceShop = shopService.getShop(serviceShopId); if (serviceShop == null) { return AjaxResult.error("服务店铺不存在"); } - + // 获取服务店铺的师傅信息(创建店铺的师傅) Worker serviceWorker = workerService.selectById(serviceShop.getWorkerId()); if (serviceWorker == null) { return AjaxResult.error("服务店铺未关联师傅信息"); } - + + // 获取服务店铺的第一个服务商品并生成OrderGoods + // 查询服务店铺的服务商品 + Goods queryGoods = new Goods(); + queryGoods.setShopId(serviceShopId); + queryGoods.setType(1); // 1表示服务类型 + List serviceGoodsList = goodsService.selectGoodsList(queryGoods); + + // 创建服务主单 OrderMaster serviceOrderMaster = new OrderMaster(); + serviceOrderMaster.setGoodsId(serviceGoodsList.size()>0?serviceGoodsList.get(0).getGoodsId():null); + serviceOrderMaster.setGoods(serviceGoodsList.size()>0?serviceGoodsList.get(0):null); serviceOrderMaster.setDeptId(accessoryOrderMaster.getDeptId()); serviceOrderMaster.setCode(orderMasterService.createOrderCode()); serviceOrderMaster.setOrderType(0); // 服务订单类型为0 @@ -2077,7 +2087,7 @@ public class OrderController extends BaseController { serviceOrderMaster.setGoodsOrderMasterId(orderMasterId); // 设置服务商品金额 serviceOrderMaster.setServerGoodsMoney(serviceMoney); - + // 复制地址信息 serviceOrderMaster.setProvinceId(accessoryOrderMaster.getProvinceId()); serviceOrderMaster.setCityId(accessoryOrderMaster.getCityId()); @@ -2090,32 +2100,51 @@ public class OrderController extends BaseController { serviceOrderMaster.setCityName(accessoryOrderMaster.getCityName()); serviceOrderMaster.setCountryName(accessoryOrderMaster.getCountryName()); serviceOrderMaster.setStreetName(accessoryOrderMaster.getStreetName()); - + // 保存服务主单 orderMasterService.insertOrderMaster(serviceOrderMaster); Assert.notNull(serviceOrderMaster.getId(), "ServiceOrderMaster.id is null!"); - + // 生成财务主单(使用传入的服务金额) FinancialMaster serviceFinancialMaster = new FinancialMaster( - financialMasterService.createCode(), + financialMasterService.createCode(), accessoryOrderMaster.getDeptId(), - serviceOrderMaster.getId(), - serviceOrderMaster.getCode(), - serviceMoney, - BigDecimal.ZERO, + serviceOrderMaster.getId(), + serviceOrderMaster.getCode(), + serviceMoney, + BigDecimal.ZERO, serviceMoney ); serviceFinancialMaster.setServerMoney(serviceMoney); financialMasterService.insertFinancialMaster(serviceFinancialMaster); Assert.notNull(serviceFinancialMaster.getId(), "ServiceFinancialMaster.id is null!"); - + + if (!CollectionUtils.isEmpty(serviceGoodsList)) { + Goods firstServiceGoods = serviceGoodsList.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.setCreateTime(new Date()); + + // 保存OrderGoods + orderGoodsService.insertOrderGoods(serviceOrderGoods); + logger.info("为服务订单[{}]生成服务商品[{}],商品ID:{},金额:{}", + serviceOrderMaster.getCode(), firstServiceGoods.getGoodsName(), + firstServiceGoods.getGoodsId(), serviceMoney); + } else { + logger.warn("服务店铺[{}]没有找到服务商品,无法生成OrderGoods", serviceShopId); + } + // 更新配件主单,关联生成的服务订单并标记已派发服务订单 OrderMaster accessoryUpdate = new OrderMaster(); accessoryUpdate.setId(accessoryOrderMaster.getId()); accessoryUpdate.setRemark(accessoryOrderMaster.getRemark() + " [已生成服务订单:" + serviceOrderMaster.getCode() + ",服务金额:" + serviceMoney + "]"); accessoryUpdate.setHasServiceOrder(1); // 标记已派发服务订单 orderMasterService.updateOrderMaster(accessoryUpdate); - + // 通知服务师傅新订单 try { Map paramsNew = new HashMap<>(); @@ -2128,7 +2157,7 @@ public class OrderController extends BaseController { } catch (Exception e) { logger.error("发送微信通知失败: {}", e.getMessage(), e); } - + // 构建返回结果 Map result = new HashMap<>(); result.put("accessoryOrderId", accessoryOrderMaster.getId()); @@ -2141,18 +2170,18 @@ public class OrderController extends BaseController { result.put("serviceWorkerId", serviceWorker.getWorkerId()); result.put("serviceWorkerName", serviceWorker.getName()); result.put("serviceWorkerPhone", serviceWorker.getPhone()); - - logger.info("成功为配件订单[{}]生成服务订单[{}],服务金额:{},服务店铺:{}", - accessoryOrderMaster.getCode(), serviceOrderMaster.getCode(), serviceMoney, serviceShop.getShopName()); - + + logger.info("成功为配件订单[{}]生成服务订单[{}],服务金额:{},服务店铺:{}", + accessoryOrderMaster.getCode(), serviceOrderMaster.getCode(), serviceMoney, serviceShop.getShopName()); + return AjaxResult.success("服务订单生成成功", result); - + } catch (Exception e) { logger.error("生成服务订单失败: {}", e.getMessage(), e); return AjaxResult.error("生成服务订单失败: " + e.getMessage()); } } - + /** * 根据快递单号查询物流信息 * @@ -2170,7 +2199,7 @@ public class OrderController extends BaseController { return AjaxResult.error("查询物流信息失败: " + e.getMessage()); } } - + /** * 根据快递单号查询物流信息(简化版) * @@ -2188,7 +2217,7 @@ public class OrderController extends BaseController { return AjaxResult.error("查询物流信息失败: " + e.getMessage()); } } - + /** * 根据订单ID查询物流信息 * 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 241ceeb5..e5178f96 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 @@ -1016,12 +1016,17 @@ public class OrderMasterController extends BaseController { if (!CollectionUtils.isEmpty(workerIds)) { List workers = workerService.selectByIds(workerIds); - workers.forEach(worker -> workerMap.put(worker.getId(), worker)); + workers.forEach(worker -> workerMap.put(worker.getWorkerId(), worker)); } if (!CollectionUtils.isEmpty(addressIds)) { - List addresses = addressService.selectByCustomerAddressIds(addressIds); - addresses.forEach(address -> addressMap.put(address.getCustomerAddressId(), address)); + // 由于没有批量查询方法,使用循环查询 + addressIds.forEach(addressId -> { + CustomerAddress address = addressService.selectByCustomerAddressId(addressId); + if (address != null) { + addressMap.put(address.getCustomerAddressId(), address); + } + }); } if (!CollectionUtils.isEmpty(goodsIds)) { @@ -1303,9 +1308,9 @@ public class OrderMasterController extends BaseController { List orderStandardList = orderGoodsService.selectByOrderMasterId(master.getId()); // 商品信息 - GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); + // GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); - Goods goods = goodsService.selectById(goodsStandard.getGoodsId()); + Goods goods = goodsService.selectById(master.getGoodsId()); // 财务信息 FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(master.getId()); @@ -1581,9 +1586,9 @@ public class OrderMasterController extends BaseController { List orderStandardList = orderGoodsService.selectByOrderMasterId(orderMaster.getId()); // 商品信息 - GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); + // GoodsStandard goodsStandard = goodsStandardService.selectById(orderStandardList.get(0).getGoodsStandardId()); - Goods goods = goodsService.selectById(goodsStandard.getGoodsId()); + Goods goods = goodsService.selectById(orderMaster.getGoodsId()); if (goods != null) { // 填充商品三级类目 if(goods.getDeptGoodsCategoryId() != null){ diff --git a/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java b/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java index 2a61038e..ca5a9485 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java @@ -40,8 +40,8 @@ public class AfterServiceRecord extends BaseEntity @Excel(name = "操作原因:1为申请退款,2为发起售后") private Long operType; - /** 师傅反馈结果:0为拒绝,1为同意,2为上门补做/重做 */ - @Excel(name = "师傅反馈结果:0为拒绝,1为同意,2为上门补做/重做") + /** 师傅反馈结果:0为拒绝,1为同意,2为上门补做/重做,3重做/补做完成 */ + @Excel(name = "师傅反馈结果:0为拒绝,1为同意,2为上门补做/重做,3重做/补做完成") private Long workerFeedbackResult; /** 师傅反馈原因类型:1为客户原因,2为师傅原因,3为其他 */ @@ -69,6 +69,22 @@ public class AfterServiceRecord extends BaseEntity private Date refundApplyTime; + /** 客户是否同意上门重做方案:0-未处理,1-同意,2-不同意 */ + @Excel(name = "客户是否同意上门重做方案:0-未处理,1-同意,2-不同意") + private Integer customerAgreeRedo; + + /** 重做/补做完成时间 */ + @Excel(name = "重做/补做完成时间") + private Date redoCompleteTime; + + /** 重做/补做完成备注 */ + @Excel(name = "重做/补做完成备注") + private String redoCompleteRemark; + + /** 重做/补做完成图片 */ + @Excel(name = "重做/补做完成图片") + private String redoCompleteImages; + private boolean excludeAfterServiceFinished; private List imgsList; diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java index 644d2a6d..e4469ce3 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java @@ -184,6 +184,30 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService orderDetailService.updateAfterTimeout(afterServiceRecord.getOrderDetailId(), 0, 0); log.info("客户是否同意{},客户操作{}",one.equals(param.getCustomerFinalCheck()),param); log.info("修改后的售后订单{}",orderDetail); + + // 新增:处理客户同意上门重做方案 + if (param.getCustomerAgreeRedo() != null) { + afterServiceRecord.setCustomerAgreeRedo(param.getCustomerAgreeRedo()); + afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); + log.info("客户同意上门重做方案状态已更新:{}", param.getCustomerAgreeRedo()); + return AjaxResult.success("客户同意方案状态已更新"); + } + + // 新增:处理师傅重做/补做完成 + if (param.getWorkerFeedbackResult() != null && param.getWorkerFeedbackResult().equals(3L)) { + afterServiceRecord.setWorkerFeedbackResult(3L); + afterServiceRecord.setRedoCompleteTime(new Date()); + if (param.getRedoCompleteRemark() != null) { + afterServiceRecord.setRedoCompleteRemark(param.getRedoCompleteRemark()); + } + if (param.getRedoCompleteImages() != null) { + afterServiceRecord.setRedoCompleteImages(param.getRedoCompleteImages()); + } + afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); + log.info("师傅重做/补做完成,记录ID:{},完成时间:{}", param.getId(), afterServiceRecord.getRedoCompleteTime()); + return AjaxResult.success("重做/补做完成状态已更新"); + } + if (param.getCustomerFinalCheck()!=null ) { // 师傅同意 且 客户同意退款 //afterServiceRecord.setCustomerFinalCheck(1L); diff --git a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml index e79feedc..afd0074b 100644 --- a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml @@ -23,12 +23,17 @@ + + + + select id, customer_reason_type, customer_reason, order_detail_id, oper_type, worker_feedback_result, worker_feedback_reason_type, worker_feedback_reason, refund, agreed_refund, original_refund, - customer_final_check, create_by, create_time, update_by, update_time, remark, refund_apply_time + customer_final_check, create_by, create_time, update_by, update_time, remark, refund_apply_time, customer_agree_redo, + redo_complete_time, redo_complete_remark, redo_complete_images from after_service_record @@ -74,6 +79,10 @@ refund, agreed_refund, customer_final_check, + customer_agree_redo, + redo_complete_time, + redo_complete_remark, + redo_complete_images, create_by, update_by, remark, @@ -90,6 +99,10 @@ #{refund}, #{agreedRefund}, #{customerFinalCheck}, + #{customerAgreeRedo}, + #{redoCompleteTime}, + #{redoCompleteRemark}, + #{redoCompleteImages}, #{createBy}, #{updateBy}, #{remark}, @@ -112,6 +125,10 @@ refund = #{refund}, agreed_refund = #{agreedRefund}, customer_final_check = #{customerFinalCheck}, + customer_agree_redo = #{customerAgreeRedo}, + redo_complete_time = #{redoCompleteTime}, + redo_complete_remark = #{redoCompleteRemark}, + redo_complete_images = #{redoCompleteImages}, create_by = #{createBy}, create_time = #{createTime}, update_by = #{updateBy},