工单过期完善

This commit is contained in:
attiya 2025-12-23 15:03:18 +08:00
parent 85d2b1a4c3
commit 119d53ee69
6 changed files with 125 additions and 38 deletions

View File

@ -16,10 +16,11 @@ import java.util.TimeZone;
public class EbikeTenantFactory implements TenantFactory {
public Object[] getTenantIds() {
try {
if (StpUtil.isLogin()) {
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
if (attributes != null) {
Object attribute = attributes.getAttribute("tenantId", RequestAttributes.SCOPE_REQUEST);
if (attribute != null) {
String id = (String) StpUtil.getLoginId();
Object object = StpUtil.getSessionByLoginId(id).get(id);
ObjectMapper objectMapper = new ObjectMapper()
@ -35,7 +36,10 @@ public class EbikeTenantFactory implements TenantFactory {
break;
}
}
long tenantId = Long.parseLong(attribute.toString());
long tenantId = 0;
if (attribute != null) {
tenantId = Long.parseLong(attribute.toString());
}
//系统管理员
if (isSysAdmin) {
return null;
@ -46,5 +50,9 @@ public class EbikeTenantFactory implements TenantFactory {
}
return null;
} catch (Exception e) {
return null;
}
}
}

View File

@ -276,6 +276,17 @@ public class EbikeBikeOrderController {
}
/**
* 有效调度工单统计
*
* @return 操作结果
*/
@GetMapping("effectiveDispatchOrder")
public JsonResult<List<EffectiveDispatchOrderDto>> effectiveDispatchOrder(@RequestBody EffectiveDispatchOrderVo effectiveDispatchOrderVo) {
List<EffectiveDispatchOrderDto> list = ebikeBikeOrderService.effectiveDispatchOrder(effectiveDispatchOrderVo);
return JsonResult.success(list);
}
/**
* 工单看板
*

View File

@ -0,0 +1,33 @@
package com.cdzy.operations.model.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author attiya
* @since 2025-12-23
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EffectiveDispatchOrderDto {
/**
* 用户名
*/
private String username;
/**
* 用户名
*/
private String staffId;
/**
* 有效调度工单总数
*/
private Integer count;
}

View File

@ -1,9 +1,6 @@
package com.cdzy.operations.service;
import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
import com.cdzy.operations.model.dto.EbikeOrderBikeListDto;
import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto;
import com.cdzy.operations.model.dto.EbikeOrderBulletinBoardInfo;
import com.cdzy.operations.model.dto.*;
import com.cdzy.operations.model.entity.EbikeBikeOrder;
import com.cdzy.operations.model.entity.EbikeRegion;
import com.cdzy.operations.model.vo.*;
@ -133,4 +130,11 @@ public interface EbikeBikeOrderService extends IService<EbikeBikeOrder> {
* 工单看板
*/
EbikeOrderBulletinBoardInfo bulletinBoard();
/**
* 有效调度工单统计
* @param effectiveDispatchOrderVo 筛选信息
* @return 统计结果
*/
List<EffectiveDispatchOrderDto> effectiveDispatchOrder(EffectiveDispatchOrderVo effectiveDispatchOrderVo);
}

View File

@ -6,10 +6,7 @@ import com.cdzy.common.ex.EbikeException;
import com.cdzy.common.model.dto.ResGPSDto;
import com.cdzy.operations.enums.*;
import com.cdzy.operations.mapper.*;
import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto;
import com.cdzy.operations.model.dto.EbikeOrderBikeListDto;
import com.cdzy.operations.model.dto.EbikeOrderBulletinBoardInfo;
import com.cdzy.operations.model.dto.*;
import com.cdzy.operations.model.entity.*;
import com.cdzy.operations.model.vo.*;
import com.cdzy.operations.service.EbikeBikeOrderService;
@ -34,7 +31,11 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
import static com.cdzy.operations.model.entity.table.EbikeBatteryInfoTableDef.EBIKE_BATTERY_INFO;
import static com.cdzy.operations.model.entity.table.EbikeBikeInfoTableDef.EBIKE_BIKE_INFO;
@ -200,6 +201,7 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
.orderCode(snowFlakeIDKeyGenerator.nextId())
.orderType(BikeOrderType.DISPATCH)
.operatorId(bikeInfo.getOperatorId())
.dispatchState(OrderDispatchState.PROCESSED)
.build();
this.mapper.insert(ebikeBikeOrder);
//TODO:车辆状态
@ -596,7 +598,9 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
ebikeOrderFileMapper.insertBatch(list);
}
//TODO:车辆状态
bikeOrder.setHandleAt(LocalDateTime.now());
updateById(bikeOrder);
redisUtil.saveDispatchOrder(bikeOrder.getOrderId(),bikeOrder,5L, TimeUnit.SECONDS);
}
@Override
@ -753,6 +757,27 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
return null;
}
@Override
public List<EffectiveDispatchOrderDto> effectiveDispatchOrder(EffectiveDispatchOrderVo effectiveDispatchOrderVo) {
if (effectiveDispatchOrderVo.getStartTime() == null) {
effectiveDispatchOrderVo.setStartTime(LocalDateTime.now().toLocalDate().withDayOfMonth(1).atStartOfDay());
}
if (effectiveDispatchOrderVo.getEndTime() == null) {
effectiveDispatchOrderVo.setEndTime(LocalDateTime.now().toLocalDate().withDayOfMonth(LocalDate.now().lengthOfMonth()).atTime(LocalTime.MAX));
}
QueryWrapper queryWrapper = QueryWrapper.create()
.select(QueryMethods.count().as(EffectiveDispatchOrderDto::getCount),EBIKE_BIKE_ORDER.RECEIVER_ID.as(EffectiveDispatchOrderDto::getStaffId))
.where(EBIKE_BIKE_ORDER.HANDLE_AT.between(effectiveDispatchOrderVo.getStartTime(), effectiveDispatchOrderVo.getEndTime()))
.where(EBIKE_BIKE_ORDER.ORDER_TYPE.eq(BikeOrderType.DISPATCH))
.where(EBIKE_BIKE_ORDER.DISPATCH_STATE.eq(OrderDispatchState.EFFECTIVE))
.groupBy(EBIKE_BIKE_ORDER.RECEIVER_ID)
.orderBy("count",true);
return ebikeBikeOrderMapper.selectListByQueryAs(queryWrapper, EffectiveDispatchOrderDto.class);
}
EbikeBikeInfo checkBikeCode(String bikeCode) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))

View File

@ -1,14 +1,20 @@
package com.cdzy.operations;
import com.cdzy.operations.utils.RedisUtil;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class EbikeOperationsApplicationTests {
@Resource
RedisUtil redisUtil;
@Test
void contextLoads() {
redisUtil.releaseDispatchLock("bike:dispatch:lock:360967408603103232");
}