处理商品类目没有的问题,增加客户是否同意上门重做方案,以及师傅重做/补做完成接口

This commit is contained in:
cb 2025-09-03 10:38:31 +08:00
parent a2a009a1e2
commit 08e5353b4e
5 changed files with 190 additions and 99 deletions

View File

@ -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<Long> 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<OrderDetail> 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<OrderMaster> allList = new ArrayList<>();
List<Long> masterIdSet = new ArrayList<Long>();
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<OrderDetail> orderDetails = orderDetailService.selectOrderDetailList(countParam);
List<OrderDetail> 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<OrderMaster> masterList = orderMasterService.selectOrderMasterList(orderMasterReq);
allList.addAll(masterList);
List<Long> mateIds=allList.stream().map(OrderMaster::getId)
List<Long> 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<OrderListResponse> 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<OrderGoods> 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<OrderGoods> 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<OrderGoods> 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<Goods> 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<String, Object> paramsNew = new HashMap<>();
@ -2128,7 +2157,7 @@ public class OrderController extends BaseController {
} catch (Exception e) {
logger.error("发送微信通知失败: {}", e.getMessage(), e);
}
// 构建返回结果
Map<String, Object> 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查询物流信息
*

View File

@ -1016,12 +1016,17 @@ public class OrderMasterController extends BaseController {
if (!CollectionUtils.isEmpty(workerIds)) {
List<Worker> 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<CustomerAddress> 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<OrderGoods> 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<OrderGoods> 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){

View File

@ -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<AfterServiceImgs> imgsList;

View File

@ -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);

View File

@ -23,12 +23,17 @@
<result property="remark" column="remark" />
<result property="originalRefund" column="original_refund" />
<result property="refundApplyTime" column="refund_apply_time" />
<result property="customerAgreeRedo" column="customer_agree_redo" />
<result property="redoCompleteTime" column="redo_complete_time" />
<result property="redoCompleteRemark" column="redo_complete_remark" />
<result property="redoCompleteImages" column="redo_complete_images" />
</resultMap>
<sql id="selectAfterServiceRecordVo">
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
</sql>
@ -74,6 +79,10 @@
<if test="refund != null">refund,</if>
<if test="agreedRefund != null">agreed_refund,</if>
<if test="customerFinalCheck != null">customer_final_check,</if>
<if test="customerAgreeRedo != null">customer_agree_redo,</if>
<if test="redoCompleteTime != null">redo_complete_time,</if>
<if test="redoCompleteRemark != null">redo_complete_remark,</if>
<if test="redoCompleteImages != null">redo_complete_images,</if>
<if test="createBy != null">create_by,</if>
<if test="updateBy != null">update_by,</if>
<if test="remark != null">remark,</if>
@ -90,6 +99,10 @@
<if test="refund != null">#{refund},</if>
<if test="agreedRefund != null">#{agreedRefund},</if>
<if test="customerFinalCheck != null">#{customerFinalCheck},</if>
<if test="customerAgreeRedo != null">#{customerAgreeRedo},</if>
<if test="redoCompleteTime != null">#{redoCompleteTime},</if>
<if test="redoCompleteRemark != null">#{redoCompleteRemark},</if>
<if test="redoCompleteImages != null">#{redoCompleteImages},</if>
<if test="createBy != null">#{createBy},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="remark != null">#{remark},</if>
@ -112,6 +125,10 @@
<if test="refund != null">refund = #{refund},</if>
<if test="agreedRefund != null">agreed_refund = #{agreedRefund},</if>
<if test="customerFinalCheck != null">customer_final_check = #{customerFinalCheck},</if>
<if test="customerAgreeRedo != null">customer_agree_redo = #{customerAgreeRedo},</if>
<if test="redoCompleteTime != null">redo_complete_time = #{redoCompleteTime},</if>
<if test="redoCompleteRemark != null">redo_complete_remark = #{redoCompleteRemark},</if>
<if test="redoCompleteImages != null">redo_complete_images = #{redoCompleteImages},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>