|
|
@@ -16,16 +16,17 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.common.mybatis.utils.WrapperUtils;
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
+import org.dromara.common.tenant.helper.TenantHelper;
|
|
|
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.domain.SysOrder;
|
|
|
import org.dromara.order.domain.SysSubOrder;
|
|
|
import org.dromara.order.domain.SysSubOrderLog;
|
|
|
-import org.dromara.order.domain.bo.SysSubOrderCancelBo;
|
|
|
-import org.dromara.order.domain.bo.SysSubOrderDispatchBo;
|
|
|
-import org.dromara.order.domain.bo.SysSubOrderListPageBo;
|
|
|
+import org.dromara.order.domain.bo.*;
|
|
|
+import org.dromara.order.domain.vo.SysSubOrderCountVo;
|
|
|
import org.dromara.order.domain.vo.SysSubOrderListPageVo;
|
|
|
+import org.dromara.order.domain.vo.SysSubOrderPendingAcceptPageVo;
|
|
|
import org.dromara.order.domain.vo.SysSubOrderVo;
|
|
|
import org.dromara.order.enums.OrderLogActionTypeEnum;
|
|
|
import org.dromara.order.enums.OrderLogActionerTypeEnum;
|
|
|
@@ -43,10 +44,7 @@ import org.dromara.system.api.domain.vo.RemoteUserVo;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
@RequiredArgsConstructor
|
|
|
@@ -146,6 +144,7 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
vo.setFulfillerStatus(fulfiller.getStatus());
|
|
|
}
|
|
|
vo.setPrice(e.getPrice());
|
|
|
+ vo.setRemark(e.getRemark());
|
|
|
return vo;
|
|
|
}));
|
|
|
}
|
|
|
@@ -275,8 +274,123 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
|
|
|
vo.setFulfillerStatus(fulfiller.getStatus());
|
|
|
}
|
|
|
vo.setPrice(e.getPrice());
|
|
|
+ vo.setRemark(e.getRemark());
|
|
|
return vo;
|
|
|
}));
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TableDataInfo<SysSubOrderPendingAcceptPageVo> listPendingAccept(SysSubOrderPendingAcceptPageBo bo, PageQuery pageQuery) {
|
|
|
+
|
|
|
+ Page<SysSubOrder> page = baseMapper.selectPage(
|
|
|
+ pageQuery.build(),
|
|
|
+ Wrappers.lambdaQuery(SysSubOrder.class)
|
|
|
+ .eq(bo.getService() != null, SysSubOrder::getService, bo.getService())
|
|
|
+ .le(bo.getMaxPrice() != null, SysSubOrder::getPrice, bo.getMaxPrice())
|
|
|
+ .ge(bo.getMinPrice() != null, SysSubOrder::getPrice, bo.getMinPrice())
|
|
|
+ .eq(SysSubOrder::getFulfiller, LoginHelper.getUserId())
|
|
|
+ .eq(SysSubOrder::getStatus, OrderStatusEnum.PENDING_ACCEPT.getValue())
|
|
|
+ .orderByDesc(SysSubOrder::getId)
|
|
|
+ );
|
|
|
+
|
|
|
+ List<Long> petIds = new ArrayList<>();
|
|
|
+ List<Long> customerIds = new ArrayList<>();
|
|
|
+ Map<Long, RemotePetVo> petMap = new HashMap<>();
|
|
|
+ Map<Long, RemoteCustomerVo> customerMap = new HashMap<>();
|
|
|
+ page.getRecords().forEach(e -> {
|
|
|
+ petIds.add(e.getUsrPet());
|
|
|
+ customerIds.add(e.getUsrCustomer());
|
|
|
+ });
|
|
|
+ remotePetService.getByIds(petIds).forEach(e -> petMap.put(e.getId(), e));
|
|
|
+ remoteCustomerService.getByIds(customerIds).forEach(e -> customerMap.put(e.getId(), e));
|
|
|
+
|
|
|
+ return TableDataInfo.build(page.convert(e -> {
|
|
|
+ SysSubOrderPendingAcceptPageVo vo = new SysSubOrderPendingAcceptPageVo();
|
|
|
+ vo.setId(e.getId());
|
|
|
+ vo.setService(e.getService());
|
|
|
+ vo.setPrice(e.getPrice());
|
|
|
+ vo.setServiceTime(e.getServiceTime());
|
|
|
+ vo.setPet(e.getUsrPet());
|
|
|
+ RemotePetVo pet = petMap.get(e.getUsrPet());
|
|
|
+ if (pet != null) {
|
|
|
+ vo.setPetName(pet.getName());
|
|
|
+ vo.setBreed(pet.getBreed());
|
|
|
+ }
|
|
|
+ vo.setStore(e.getStore());
|
|
|
+// vo.setStoreName();
|
|
|
+// vo.setStoreAreaCode();
|
|
|
+// vo.setStoreAddress();
|
|
|
+ vo.setCustomer(e.getUsrCustomer());
|
|
|
+ RemoteCustomerVo customer = customerMap.get(e.getUsrCustomer());
|
|
|
+ if (customer != null) {
|
|
|
+ vo.setCustomerName(customer.getName());
|
|
|
+ vo.setCustomerPhone(customer.getAddress());
|
|
|
+ }
|
|
|
+ vo.setFromCode(e.getFromCode());
|
|
|
+ vo.setFromAddress(e.getFromAddress());
|
|
|
+ vo.setToCode(e.getToCode());
|
|
|
+ vo.setToAddress(e.getToAddress());
|
|
|
+ vo.setRemark(e.getRemark());
|
|
|
+ return vo;
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public boolean accept(SysSubOrderAcceptBo bo) {
|
|
|
+
|
|
|
+ SysSubOrder subOrder = baseMapper.selectById(bo.getOrderId());
|
|
|
+ subOrder.setStatus(OrderStatusEnum.IN_SERVICE.getValue());
|
|
|
+ boolean subOrderFlag = baseMapper.updateById(subOrder) == 0;
|
|
|
+ if (subOrderFlag) {
|
|
|
+ throw new RuntimeException("修改订单状态失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ SysSubOrderLog orderLog = new SysSubOrderLog();
|
|
|
+ orderLog.setSubOrderId(subOrder.getId());
|
|
|
+ orderLog.setActioner(LoginHelper.getUserId());
|
|
|
+ orderLog.setActionerType(OrderLogActionerTypeEnum.FULFILLER.getValue());
|
|
|
+ orderLog.setLogType(OrderLogTypeEnum.ORDER.getValue());
|
|
|
+ orderLog.setActionType(OrderLogActionTypeEnum.RECIEVED.getValue());
|
|
|
+ orderLog.setTitle(OrderLogActionTypeEnum.RECIEVED.getLabel());
|
|
|
+ orderLog.setContent("履约者已确认接单");
|
|
|
+ orderLog.setTenantId(subOrder.getTenantId());
|
|
|
+
|
|
|
+ SysSubOrderLog fulfillerLog = new SysSubOrderLog();
|
|
|
+ fulfillerLog.setSubOrderId(subOrder.getId());
|
|
|
+ fulfillerLog.setActioner(LoginHelper.getUserId());
|
|
|
+ fulfillerLog.setActionerType(OrderLogActionerTypeEnum.FULFILLER.getValue());
|
|
|
+ fulfillerLog.setLogType(OrderLogTypeEnum.FULFILLER.getValue());
|
|
|
+ fulfillerLog.setActionType(OrderLogActionTypeEnum.FULFILLER_RECIEVE.getValue());
|
|
|
+ fulfillerLog.setTitle(OrderLogActionTypeEnum.FULFILLER_RECIEVE.getLabel());
|
|
|
+ fulfillerLog.setContent("履约者 " + LoginHelper.getLoginUser().getNickname() + " 已确认接单,准备前往服务地点");
|
|
|
+ fulfillerLog.setTenantId(subOrder.getTenantId());
|
|
|
+
|
|
|
+ boolean logFlag = subOrderLogMapper.insertBatch(Arrays.asList(orderLog, fulfillerLog));
|
|
|
+ if (!logFlag) {
|
|
|
+ throw new RuntimeException("新增日志失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean remark(SysSubOrderRemarkBo bo) {
|
|
|
+ return baseMapper.update(
|
|
|
+ Wrappers.lambdaUpdate(SysSubOrder.class)
|
|
|
+ .eq(SysSubOrder::getId, bo.getOrderId())
|
|
|
+ .set(SysSubOrder::getRemark, bo.getRemark())
|
|
|
+ ) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SysSubOrderCountVo count() {
|
|
|
+ SysSubOrderCountVo vo = new SysSubOrderCountVo();
|
|
|
+ vo.setTotal(0L);
|
|
|
+ vo.setReject(0L);
|
|
|
+ vo.setAward(0L);
|
|
|
+ vo.setPunishment(0L);
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
}
|