diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeOrderBikeListDto.java b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeOrderBikeListDto.java index 3b7a814..603e37b 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeOrderBikeListDto.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeOrderBikeListDto.java @@ -59,4 +59,27 @@ public class EbikeOrderBikeListDto implements Serializable { * 外接电池电量(该值由控制器提供,若控制器不支持此值为0) */ private Integer soc; + + + /** + * 是否有巡检工单 + */ + private Boolean hasInspectionOrder; + + /** + * 是否有换电工单 + */ + private Boolean hasChangeBatteryOrder; + + + /** + * 是否有调度工单 + */ + private Boolean hasDispatchOrder; + + + /** + * 是否有维修工单 + */ + private Boolean hasRepairOrder; } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java index 891bcdc..2fc4933 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java @@ -19,6 +19,7 @@ import com.cdzy.operations.utils.GeoCodingUtil; import com.cdzy.operations.utils.MinioUtil; import com.cdzy.operations.utils.RedisUtil; import com.mybatisflex.core.keygen.impl.SnowFlakeIDKeyGenerator; +import com.mybatisflex.core.query.QueryMethods; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.update.UpdateChain; import com.mybatisflex.spring.service.impl.ServiceImpl; @@ -112,6 +113,7 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl list = fileUrls.stream().map(e -> EbikeOrderFile.builder().orderId(orderId).fileUrl(e).build()).toList(); orderFileMapper.insertBatch(list); } + //TODO:车辆状态 } @Transactional @@ -181,6 +184,7 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl list = fileUrls.stream().map(e -> EbikeOrderFile.builder().orderId(orderId).fileUrl(e).build()).toList(); orderFileMapper.insertBatch(list); } + //TODO:车辆状态 } @Transactional @@ -342,7 +347,7 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl20 && resGPSDto.getGsm()<31){ + if (resGPSDto.getGsm() > 20 && resGPSDto.getGsm() < 31) { bikeInfo.setGsm("信号强"); - }else if (resGPSDto.getGsm()<20 && resGPSDto.getGsm()>10){ + } else if (resGPSDto.getGsm() < 20 && resGPSDto.getGsm() > 10) { bikeInfo.setGsm("信号一般"); - }else if (resGPSDto.getGsm()<=10){ + } else if (resGPSDto.getGsm() <= 10) { bikeInfo.setGsm("信号弱"); } - bikeInfo.setHelmetExit(resGPSDto.getHelmetExit()==1?"头盔在位":"头盔不在位"); - bikeInfo.setIsHelmetLocked(resGPSDto.getIsHelmetLocked()==1?"头盔已上锁":"头盔未上锁"); - bikeInfo.setIsWheelSpin(resGPSDto.getIsWheelSpin()==1?"转动":"静止"); - bikeInfo.setIsMoving(resGPSDto.getIsMoving()==1?"运动":"静止"); - bikeInfo.setAccOn(resGPSDto.getAccOn()==1?"开":"关"); - bikeInfo.setWheelLocked(resGPSDto.getWheelLocked()==1?"上锁":"未上锁"); - bikeInfo.setSeatLocked(resGPSDto.getSeatLocked()==1?"关闭":"打开"); + bikeInfo.setHelmetExit(resGPSDto.getHelmetExit() == 1 ? "头盔在位" : "头盔不在位"); + bikeInfo.setIsHelmetLocked(resGPSDto.getIsHelmetLocked() == 1 ? "头盔已上锁" : "头盔未上锁"); + bikeInfo.setIsWheelSpin(resGPSDto.getIsWheelSpin() == 1 ? "转动" : "静止"); + bikeInfo.setIsMoving(resGPSDto.getIsMoving() == 1 ? "运动" : "静止"); + bikeInfo.setAccOn(resGPSDto.getAccOn() == 1 ? "开" : "关"); + bikeInfo.setWheelLocked(resGPSDto.getWheelLocked() == 1 ? "上锁" : "未上锁"); + bikeInfo.setSeatLocked(resGPSDto.getSeatLocked() == 1 ? "关闭" : "打开"); bikeInfo.setSpeed(resGPSDto.getSpeed()); bikeInfo.setLatestTime(resGPSDto.getLatestTime()); - String locationToAddress = geoCodingUtil.getLocationToAddress(resGPSDto.getLongitude(),resGPSDto.getLatitude()); + String locationToAddress = geoCodingUtil.getLocationToAddress(resGPSDto.getLongitude(), resGPSDto.getLatitude()); bikeInfo.setChineseLocation(locationToAddress); return bikeInfo; } @@ -413,18 +418,67 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl bikeList(Long regionId) { QueryWrapper queryWrapper = QueryWrapper.create() - .select(EBIKE_BIKE_INFO.BIKE_CODE,EBIKE_BIKE_INFO.LOCATION,EBIKE_BIKE_INFO.USAGE_STATUS,EBIKE_ECU_INFO.ECU_SN) + .select( + EBIKE_BIKE_INFO.BIKE_CODE, + EBIKE_BIKE_INFO.LOCATION, + EBIKE_BIKE_INFO.USAGE_STATUS, + EBIKE_ECU_INFO.ECU_SN, + // 判断是否有巡检工单 + QueryMethods.case_() + .when(QueryMethods.exists( + QueryWrapper.create() + .from(EBIKE_BIKE_ORDER) + .where(EBIKE_BIKE_ORDER.BIKE_CODE.eq(EBIKE_BIKE_INFO.BIKE_CODE)) + .and(EBIKE_BIKE_ORDER.ORDER_TYPE.eq(BikeOrderType.INSPECTION)) + )) + .then(true) + .else_(false) + .end().as(EbikeOrderBikeListDto::getHasInspectionOrder), + // 判断是否有换电工单 + QueryMethods.case_() + .when(QueryMethods.exists( + QueryWrapper.create() + .from(EBIKE_BIKE_ORDER) + .where(EBIKE_BIKE_ORDER.BIKE_CODE.eq(EBIKE_BIKE_INFO.BIKE_CODE)) + .and(EBIKE_BIKE_ORDER.ORDER_TYPE.eq(BikeOrderType.BATTERY_SWAP)) + )) + .then(true) + .else_(false) + .end().as(EbikeOrderBikeListDto::getHasChangeBatteryOrder), + // 判断是否有调度工单 + QueryMethods.case_() + .when(QueryMethods.exists( + QueryWrapper.create() + .from(EBIKE_BIKE_ORDER) + .where(EBIKE_BIKE_ORDER.BIKE_CODE.eq(EBIKE_BIKE_INFO.BIKE_CODE)) + .and(EBIKE_BIKE_ORDER.ORDER_TYPE.eq(BikeOrderType.DISPATCH)) + )) + .then(true) + .else_(false) + .end().as(EbikeOrderBikeListDto::getHasDispatchOrder), + // 判断是否有换电工单 + QueryMethods.case_() + .when(QueryMethods.exists( + QueryWrapper.create() + .from(EBIKE_BIKE_ORDER) + .where(EBIKE_BIKE_ORDER.BIKE_CODE.eq(EBIKE_BIKE_INFO.BIKE_CODE)) + .and(EBIKE_BIKE_ORDER.ORDER_TYPE.eq(BikeOrderType.REPAIR)) + )) + .then(true) + .else_(false) + .end().as(EbikeOrderBikeListDto::getHasRepairOrder) + ) .where(EBIKE_BIKE_INFO.REGION_ID.eq(regionId)) .where(EBIKE_BIKE_INFO.STATUS.eq(BikeStatus.LAUNCH)) .leftJoin(EBIKE_ECU_INFO).on(EBIKE_ECU_INFO.ECU_ID.eq(EBIKE_BIKE_INFO.ECU_ID)); List list = bikeInfoMapper.selectListByQueryAs(queryWrapper, EbikeOrderBikeListDto.class); List snList = list.stream().map(EbikeOrderBikeListDto::getEcuSn).toList(); Map objectMap = redisUtil.batchGetEcuWithMap(snList); - list.forEach(e->{ - ResGPSDto resGPSDto = (ResGPSDto)objectMap.get(e.getEcuSn()); - if (resGPSDto != null){ - e.setSoc(resGPSDto.getSoc()); - } + list.forEach(e -> { + ResGPSDto resGPSDto = (ResGPSDto) objectMap.get(e.getEcuSn()); + if (resGPSDto != null) { + e.setSoc(resGPSDto.getSoc()); + } }); return list; }