工单过期完善
This commit is contained in:
parent
85d2b1a4c3
commit
119d53ee69
@ -16,35 +16,43 @@ import java.util.TimeZone;
|
|||||||
public class EbikeTenantFactory implements TenantFactory {
|
public class EbikeTenantFactory implements TenantFactory {
|
||||||
|
|
||||||
public Object[] getTenantIds() {
|
public Object[] getTenantIds() {
|
||||||
if (StpUtil.isLogin()) {
|
try {
|
||||||
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
|
if (StpUtil.isLogin()) {
|
||||||
Object attribute = attributes.getAttribute("tenantId", RequestAttributes.SCOPE_REQUEST);
|
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
|
||||||
if (attribute != null) {
|
if (attributes != null) {
|
||||||
String id = (String) StpUtil.getLoginId();
|
Object attribute = attributes.getAttribute("tenantId", RequestAttributes.SCOPE_REQUEST);
|
||||||
Object object = StpUtil.getSessionByLoginId(id).get(id);
|
String id = (String) StpUtil.getLoginId();
|
||||||
ObjectMapper objectMapper = new ObjectMapper()
|
Object object = StpUtil.getSessionByLoginId(id).get(id);
|
||||||
.registerModule(new JavaTimeModule())
|
ObjectMapper objectMapper = new ObjectMapper()
|
||||||
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
|
.registerModule(new JavaTimeModule())
|
||||||
.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
|
||||||
CommonStaffInfo staffInfo = objectMapper.convertValue(object, CommonStaffInfo.class);
|
.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
|
||||||
List<CommonEbikeRole> roles = staffInfo.getRoles();
|
CommonStaffInfo staffInfo = objectMapper.convertValue(object, CommonStaffInfo.class);
|
||||||
boolean isSysAdmin = false;
|
List<CommonEbikeRole> roles = staffInfo.getRoles();
|
||||||
for (CommonEbikeRole role : roles) {
|
boolean isSysAdmin = false;
|
||||||
if (role.getSysAdmin()) {
|
for (CommonEbikeRole role : roles) {
|
||||||
isSysAdmin = true;
|
if (role.getSysAdmin()) {
|
||||||
break;
|
isSysAdmin = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
long tenantId = 0;
|
||||||
|
if (attribute != null) {
|
||||||
|
tenantId = Long.parseLong(attribute.toString());
|
||||||
|
}
|
||||||
|
//系统管理员
|
||||||
|
if (isSysAdmin) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return new Object[]{tenantId};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
long tenantId = Long.parseLong(attribute.toString());
|
|
||||||
//系统管理员
|
|
||||||
if (isSysAdmin) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
return new Object[]{tenantId};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单看板
|
* 工单看板
|
||||||
*
|
*
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,9 +1,6 @@
|
|||||||
package com.cdzy.operations.service;
|
package com.cdzy.operations.service;
|
||||||
|
|
||||||
import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
|
import com.cdzy.operations.model.dto.*;
|
||||||
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.entity.EbikeBikeOrder;
|
import com.cdzy.operations.model.entity.EbikeBikeOrder;
|
||||||
import com.cdzy.operations.model.entity.EbikeRegion;
|
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||||
import com.cdzy.operations.model.vo.*;
|
import com.cdzy.operations.model.vo.*;
|
||||||
@ -133,4 +130,11 @@ public interface EbikeBikeOrderService extends IService<EbikeBikeOrder> {
|
|||||||
* 工单看板
|
* 工单看板
|
||||||
*/
|
*/
|
||||||
EbikeOrderBulletinBoardInfo bulletinBoard();
|
EbikeOrderBulletinBoardInfo bulletinBoard();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有效调度工单统计
|
||||||
|
* @param effectiveDispatchOrderVo 筛选信息
|
||||||
|
* @return 统计结果
|
||||||
|
*/
|
||||||
|
List<EffectiveDispatchOrderDto> effectiveDispatchOrder(EffectiveDispatchOrderVo effectiveDispatchOrderVo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,10 +6,7 @@ import com.cdzy.common.ex.EbikeException;
|
|||||||
import com.cdzy.common.model.dto.ResGPSDto;
|
import com.cdzy.common.model.dto.ResGPSDto;
|
||||||
import com.cdzy.operations.enums.*;
|
import com.cdzy.operations.enums.*;
|
||||||
import com.cdzy.operations.mapper.*;
|
import com.cdzy.operations.mapper.*;
|
||||||
import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
|
import com.cdzy.operations.model.dto.*;
|
||||||
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.entity.*;
|
import com.cdzy.operations.model.entity.*;
|
||||||
import com.cdzy.operations.model.vo.*;
|
import com.cdzy.operations.model.vo.*;
|
||||||
import com.cdzy.operations.service.EbikeBikeOrderService;
|
import com.cdzy.operations.service.EbikeBikeOrderService;
|
||||||
@ -34,7 +31,11 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
import java.util.*;
|
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.EbikeBatteryInfoTableDef.EBIKE_BATTERY_INFO;
|
||||||
import static com.cdzy.operations.model.entity.table.EbikeBikeInfoTableDef.EBIKE_BIKE_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())
|
.orderCode(snowFlakeIDKeyGenerator.nextId())
|
||||||
.orderType(BikeOrderType.DISPATCH)
|
.orderType(BikeOrderType.DISPATCH)
|
||||||
.operatorId(bikeInfo.getOperatorId())
|
.operatorId(bikeInfo.getOperatorId())
|
||||||
|
.dispatchState(OrderDispatchState.PROCESSED)
|
||||||
.build();
|
.build();
|
||||||
this.mapper.insert(ebikeBikeOrder);
|
this.mapper.insert(ebikeBikeOrder);
|
||||||
//TODO:车辆状态
|
//TODO:车辆状态
|
||||||
@ -596,7 +598,9 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
|
|||||||
ebikeOrderFileMapper.insertBatch(list);
|
ebikeOrderFileMapper.insertBatch(list);
|
||||||
}
|
}
|
||||||
//TODO:车辆状态
|
//TODO:车辆状态
|
||||||
|
bikeOrder.setHandleAt(LocalDateTime.now());
|
||||||
updateById(bikeOrder);
|
updateById(bikeOrder);
|
||||||
|
redisUtil.saveDispatchOrder(bikeOrder.getOrderId(),bikeOrder,5L, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -627,15 +631,15 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
|
|||||||
throw new EbikeException("车辆编号错误");
|
throw new EbikeException("车辆编号错误");
|
||||||
}
|
}
|
||||||
Boolean isFault = inspectionVo.getIsFault();
|
Boolean isFault = inspectionVo.getIsFault();
|
||||||
if (isFault){
|
if (isFault) {
|
||||||
queryWrapper.clear();
|
queryWrapper.clear();
|
||||||
queryWrapper.select(EBIKE_ORDER_FILE.FILE_URL)
|
queryWrapper.select(EBIKE_ORDER_FILE.FILE_URL)
|
||||||
.where(EBIKE_ORDER_FILE.ORDER_ID.eq( bikeOrder.getOrderId()));
|
.where(EBIKE_ORDER_FILE.ORDER_ID.eq(bikeOrder.getOrderId()));
|
||||||
List<String> list = ebikeOrderFileMapper.selectListByQueryAs(queryWrapper,String.class);
|
List<String> list = ebikeOrderFileMapper.selectListByQueryAs(queryWrapper, String.class);
|
||||||
|
|
||||||
queryWrapper.clear();
|
queryWrapper.clear();
|
||||||
queryWrapper.select(EBIKE_ORDER_PART.ORDER_PART)
|
queryWrapper.select(EBIKE_ORDER_PART.ORDER_PART)
|
||||||
.where(EBIKE_ORDER_PART.ORDER_ID.eq( bikeOrder.getOrderId()));
|
.where(EBIKE_ORDER_PART.ORDER_ID.eq(bikeOrder.getOrderId()));
|
||||||
List<Integer> parts = ebikeOrderPartMapper.selectListByQueryAs(queryWrapper, Integer.class);
|
List<Integer> parts = ebikeOrderPartMapper.selectListByQueryAs(queryWrapper, Integer.class);
|
||||||
|
|
||||||
EbikeBikeOrder ebikeBikeOrder = EbikeBikeOrder.builder()
|
EbikeBikeOrder ebikeBikeOrder = EbikeBikeOrder.builder()
|
||||||
@ -753,6 +757,27 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
|
|||||||
return null;
|
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) {
|
EbikeBikeInfo checkBikeCode(String bikeCode) {
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))
|
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))
|
||||||
|
|||||||
@ -1,14 +1,20 @@
|
|||||||
package com.cdzy.operations;
|
package com.cdzy.operations;
|
||||||
|
|
||||||
|
import com.cdzy.operations.utils.RedisUtil;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
@SpringBootTest
|
@SpringBootTest
|
||||||
class EbikeOperationsApplicationTests {
|
class EbikeOperationsApplicationTests {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
RedisUtil redisUtil;
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void contextLoads() {
|
void contextLoads() {
|
||||||
|
redisUtil.releaseDispatchLock("bike:dispatch:lock:360967408603103232");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user