|
|
@@ -21,13 +21,17 @@ import org.dromara.fulfiller.api.RemoteFulfillerService;
|
|
|
import org.dromara.fulfiller.api.domain.vo.RemoteFulfillerVo;
|
|
|
import org.dromara.fulfiller.api.model.FulfillerLoginUser;
|
|
|
import org.dromara.order.api.enums.*;
|
|
|
+import org.dromara.order.config.OrderRabbitMqConfig;
|
|
|
import org.dromara.order.domain.SysSubOrder;
|
|
|
import org.dromara.order.domain.SysSubOrderLog;
|
|
|
import org.dromara.order.domain.bo.*;
|
|
|
import org.dromara.order.domain.vo.*;
|
|
|
+import org.dromara.common.rabbitmq.message.SubOrderDispatchMessage;
|
|
|
+import org.dromara.common.rabbitmq.message.SubOrderRejectMessage;
|
|
|
import org.dromara.order.mapper.SysSubOrderLogMapper;
|
|
|
import org.dromara.order.mapper.SysSubOrderMapper;
|
|
|
import org.dromara.order.service.ISysSubOrderService;
|
|
|
+import org.dromara.common.rabbitmq.core.RabbitMqProducer;
|
|
|
import org.dromara.resource.api.RemoteFileService;
|
|
|
import org.dromara.resource.api.domain.RemoteFile;
|
|
|
import org.dromara.system.api.RemoteAreaStationService;
|
|
|
@@ -37,9 +41,11 @@ import org.dromara.system.api.RemoteUserService;
|
|
|
import org.dromara.system.api.domain.vo.RemoteStoreVo;
|
|
|
import org.dromara.system.api.domain.vo.RemoteUserVo;
|
|
|
import org.dromara.system.api.model.LoginUser;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicLong;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -48,6 +54,9 @@ import java.util.stream.Collectors;
|
|
|
@RequiredArgsConstructor
|
|
|
public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
|
|
|
+ // 此代码为AI生成
|
|
|
+ private final RabbitMqProducer rabbitMqProducer;
|
|
|
+
|
|
|
private final SysSubOrderMapper baseMapper;
|
|
|
private final SysSubOrderLogMapper subOrderLogMapper;
|
|
|
|
|
|
@@ -199,6 +208,28 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
throw new RuntimeException("记录日志失败");
|
|
|
}
|
|
|
|
|
|
+ // 此代码为AI生成 - 派单时发送RabbitMQ消息用于后续消息通知 (暂时禁用)
|
|
|
+ /*
|
|
|
+ try {
|
|
|
+ SubOrderDispatchMessage message = new SubOrderDispatchMessage();
|
|
|
+ BeanUtils.copyProperties(subOrder, message);
|
|
|
+
|
|
|
+ // 补全派单人信息
|
|
|
+ message.setDispatcherId(LoginHelper.getUserId());
|
|
|
+ if (LoginHelper.getLoginUser() != null) {
|
|
|
+ message.setDispatcherName(LoginHelper.getLoginUser().getNickname());
|
|
|
+ }
|
|
|
+
|
|
|
+ rabbitMqProducer.sendMessage(
|
|
|
+ OrderRabbitMqConfig.ORDER_EXCHANGE,
|
|
|
+ OrderRabbitMqConfig.ORDER_ROUTING_KEY,
|
|
|
+ message
|
|
|
+ );
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 消息发送失败不影响派单,仅记录日志
|
|
|
+ }
|
|
|
+ */
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -217,7 +248,9 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
SysSubOrderLog log = new SysSubOrderLog();
|
|
|
|
|
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
|
|
- if (loginUser.getUserType().equals(UserType.FULFILLER_USER.getUserType())) {
|
|
|
+ // 此代码由AI生成 - 判断是否为履约者取消
|
|
|
+ boolean isFulfillerCancel = loginUser.getUserType().equals(UserType.FULFILLER_USER.getUserType());
|
|
|
+ if (isFulfillerCancel) {
|
|
|
log.setSubOrderId(subOrder.getId());
|
|
|
log.setActioner(LoginHelper.getUserId());
|
|
|
log.setActionerType(OrderLogActionerTypeEnum.FULFILLER.getValue());
|
|
|
@@ -244,12 +277,44 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
throw new RuntimeException("日志追加失败");
|
|
|
}
|
|
|
|
|
|
+ // 此代码由AI生成 - 履约者取消订单时发送消息通知
|
|
|
+ if (isFulfillerCancel) {
|
|
|
+ try {
|
|
|
+ SubOrderRejectMessage msg = new SubOrderRejectMessage();
|
|
|
+ msg.setOrderCode(subOrder.getCode());
|
|
|
+ msg.setOrderId(subOrder.getId());
|
|
|
+ msg.setStoreSite(subOrder.getStoreSite());
|
|
|
+ msg.setFulfillerId(LoginHelper.getUserId());
|
|
|
+ msg.setFulfillerName(loginUser.getNickname());
|
|
|
+ msg.setRejectReason(bo.getReason());
|
|
|
+ // 获取门店名称
|
|
|
+ String storeName = remoteStoreService.getNameById(subOrder.getStore());
|
|
|
+ msg.setStoreName(storeName != null ? storeName : "未知门店");
|
|
|
+ // 设置取消时间
|
|
|
+ msg.setCancelTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
+ // 此代码由AI生成 - 标识为取消操作
|
|
|
+ msg.setActionType("CANCEL");
|
|
|
+
|
|
|
+ rabbitMqProducer.sendMessage(
|
|
|
+ OrderRabbitMqConfig.ORDER_EXCHANGE,
|
|
|
+ OrderRabbitMqConfig.ORDER_REJECT_ROUTING_KEY,
|
|
|
+ msg
|
|
|
+ );
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 消息发送失败不影响主流程
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public SysSubOrderVo getInfo(Long id) {
|
|
|
- return baseMapper.selectVoById(id);
|
|
|
+ SysSubOrderVo vo = baseMapper.selectVoById(id);
|
|
|
+ if (vo == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -259,11 +324,8 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
|
|
|
if (StringUtils.isNotBlank(bo.getContent())) {
|
|
|
List<Long> storeIds = remoteStoreService.selectIdsByName(bo.getContent());
|
|
|
-// orderWrapper.in(SysSubOrder::getStore, WrapperUtils.convertIds(storeIds));
|
|
|
List<Long> userIds = remoteUserService.selectUserIdsByName(bo.getContent());
|
|
|
-// orderWrapper.in(SysSubOrder::getOrderPlacer, WrapperUtils.convertIds(userIds));
|
|
|
List<Long> customerIds = remoteCustomerService.selectIdsByName(bo.getContent());
|
|
|
-// orderWrapper.in(SysSubOrder::getUsrCustomer, WrapperUtils.convertIds(customerIds));
|
|
|
orderWrapper.and(w -> w
|
|
|
.in(SysSubOrder::getStore, WrapperUtils.convertIds(storeIds)).or()
|
|
|
.in(SysSubOrder::getOrderPlacer, WrapperUtils.convertIds(userIds)).or()
|
|
|
@@ -769,6 +831,32 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
throw new RuntimeException("日志新增失败");
|
|
|
}
|
|
|
|
|
|
+ // 此代码由AI生成 - 发送拒单消息(包含门店名称和取消时间)
|
|
|
+ try {
|
|
|
+ SubOrderRejectMessage msg = new SubOrderRejectMessage();
|
|
|
+ msg.setOrderCode(subOrder.getCode());
|
|
|
+ msg.setOrderId(subOrder.getId());
|
|
|
+ msg.setStoreSite(subOrder.getStoreSite());
|
|
|
+ msg.setFulfillerId(LoginHelper.getUserId());
|
|
|
+ msg.setFulfillerName(LoginHelper.getLoginUser().getNickname());
|
|
|
+ msg.setRejectReason(bo.getRejectReason());
|
|
|
+ // 获取门店名称
|
|
|
+ String storeName = remoteStoreService.getNameById(subOrder.getStore());
|
|
|
+ msg.setStoreName(storeName != null ? storeName : "未知门店");
|
|
|
+ // 设置取消时间
|
|
|
+ msg.setCancelTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
+ // 此代码由AI生成 - 标识为拒单操作
|
|
|
+ msg.setActionType("REJECT");
|
|
|
+
|
|
|
+ rabbitMqProducer.sendMessage(
|
|
|
+ OrderRabbitMqConfig.ORDER_EXCHANGE,
|
|
|
+ OrderRabbitMqConfig.ORDER_REJECT_ROUTING_KEY,
|
|
|
+ msg
|
|
|
+ );
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 忽略发送异常,以不影响主流程
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|