This commit is contained in:
LHG 2025-04-22 16:23:40 +08:00
commit 1e247457b9
5 changed files with 64 additions and 6 deletions

View File

@ -81,4 +81,13 @@ public interface MaintenanceFeignClient {
*/ */
@PostMapping("ebikeBikeInfo/deleteBatteryInfo") @PostMapping("ebikeBikeInfo/deleteBatteryInfo")
JsonResult<List<RspBikeInfo>> deleteBatteryInfo(@RequestBody List<String> batteryCodes); JsonResult<List<RspBikeInfo>> deleteBatteryInfo(@RequestBody List<String> batteryCodes);
/**
* 根据ecuSn生成换电工单
*
* @param ecuSn 中控编号编号
* @return 结果
*/
@GetMapping("ebikeOrder/changeBattery")
JsonResult<?> changeBattery(@RequestParam(name = "ecuSn") String ecuSn);
} }

View File

@ -47,7 +47,7 @@ public class EbikeBikeOrder implements Serializable {
private Long orderCode; private Long orderCode;
/** /**
* 工单类型 1 维修工单 2 换电工单 * 工单类型 1 维修工单 2 换电工单 3 调度工单
*/ */
private String orderType; private String orderType;

View File

@ -41,6 +41,7 @@ import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -55,8 +56,7 @@ import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeBikeInfoTableDef.E
import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeBikeOrderTableDef.EBIKE_BIKE_ORDER; import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeBikeOrderTableDef.EBIKE_BIKE_ORDER;
import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeCarStatusInfoTableDef.EBIKE_CAR_STATUS_INFO; import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeCarStatusInfoTableDef.EBIKE_CAR_STATUS_INFO;
import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeEcuInfoTableDef.EBIKE_ECU_INFO; import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeEcuInfoTableDef.EBIKE_ECU_INFO;
import static com.mybatisflex.core.query.QueryMethods.max; import static com.mybatisflex.core.query.QueryMethods.*;
import static com.mybatisflex.core.query.QueryMethods.select;
/** /**
* 车辆基本信息 服务层实现 * 车辆基本信息 服务层实现
@ -113,6 +113,8 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
private MinioUtil minioUtil; private MinioUtil minioUtil;
@Resource @Resource
private GeoCodingUtil geoCodingUtil; private GeoCodingUtil geoCodingUtil;
@Resource
private EbikeVehicleListingRecordsMapper ebikeVehicleListingRecordsMapper;
@Override @Override
public EbikeBikeInfo getByBikeCode(String bikeCode) { public EbikeBikeInfo getByBikeCode(String bikeCode) {
@ -366,6 +368,7 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
try { try {
ebikeBikeInfoMapper.vehicleLeaveWarehouse(reqBulkDeliveryDto.getBikeCode(), ebikeBikeInfoMapper.vehicleLeaveWarehouse(reqBulkDeliveryDto.getBikeCode(),
reqBulkDeliveryDto.getStatus(), reqBulkDeliveryDto.getReginId()); reqBulkDeliveryDto.getStatus(), reqBulkDeliveryDto.getReginId());
batchRecordBikeListingInfo(reqBulkDeliveryDto);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error("vehicleLeaveWarehouse===>{}", e.getMessage() + Arrays.toString(e.getStackTrace())); log.error("vehicleLeaveWarehouse===>{}", e.getMessage() + Arrays.toString(e.getStackTrace()));
@ -1085,4 +1088,44 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
} }
return resEbikeBikeWorkOrderDto; return resEbikeBikeWorkOrderDto;
} }
/**
* 批量记录车辆上架信息
*
* @param reqBulkDeliveryDto 请求参数
*/
public void batchRecordBikeListingInfo(ReqBulkDeliveryDto reqBulkDeliveryDto) {
// 获取车辆上架的车牌列表
List<String> bikeCode = reqBulkDeliveryDto.getBikeCode();
String tokenValue = StpUtil.getTokenValue();
JsonResult<StaffFeign> result = staffFeignClient.getInfoByToken(tokenValue);
if (result.getCode() != Code.SUCCESS) {
throw new RuntimeException("获取用户信息失败");
}
StaffFeign staffFeign = result.getData();
// 获取当前操作用户和时间
String operatorName = staffFeign.getStaffId().toString();
LocalDateTime currentTime = LocalDateTime.now();
String batch = currentTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); // 格式化当前时间为年月日时分秒形式
// 创建用于批量插入的记录列表
List<EbikeVehicleListingRecords> recordsList = new ArrayList<>(bikeCode.size());
// 遍历车辆编号列表生成每个记录对象
for (String bikeId : bikeCode) {
EbikeVehicleListingRecords record = new EbikeVehicleListingRecords();
record.setBatch(batch);
record.setBikeCode(bikeId);
String reginId = reqBulkDeliveryDto.getReginId();
// 根据reginId是否为空设置内容
record.setContent(reginId.isEmpty() ? "车辆批量下架" : "车辆批量上架");
record.setOperationType(reginId.isEmpty() ? 0 : 1);
record.setOperateUser(operatorName);
record.setOperateTime(currentTime);
record.setReginId(reqBulkDeliveryDto.getReginId());
recordsList.add(record);
}
// 如果有记录则批量插入
if (!recordsList.isEmpty()) {
ebikeVehicleListingRecordsMapper.insertBatch(recordsList);
}
}
} }

View File

@ -39,10 +39,11 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
EbikeBikeInfo ebikeBikeInfo = infoMapper.selectOneByQuery(queryWrapper); EbikeBikeInfo ebikeBikeInfo = infoMapper.selectOneByQuery(queryWrapper);
queryWrapper.clear(); queryWrapper.clear();
queryWrapper.where(EBIKE_BIKE_ORDER.BIKE_ID.eq(ebikeBikeInfo.getBikeId())) queryWrapper.where(EBIKE_BIKE_ORDER.BIKE_ID.eq(ebikeBikeInfo.getBikeId()))
.where(EBIKE_BIKE_ORDER.ORDER_TYPE.eq("2"))
.where(EBIKE_BIKE_ORDER.HANDLE_STATE.eq("0")); .where(EBIKE_BIKE_ORDER.HANDLE_STATE.eq("0"));
EbikeBikeOrder order = this.mapper.selectOneByQuery(queryWrapper); EbikeBikeOrder order = this.mapper.selectOneByQuery(queryWrapper);
if (order != null) { if (order != null) {
throw new RuntimeException("该车辆存在换电工单,无需重复生成"); throw new RuntimeException("该车辆存在未完成的换电工单,无需重复生成");
} }
//生成工单 //生成工单
EbikeBikeOrder bikeOrder = new EbikeBikeOrder(); EbikeBikeOrder bikeOrder = new EbikeBikeOrder();
@ -57,6 +58,7 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
public void doneChangeBattery(String bikeId, String receiverId) { public void doneChangeBattery(String bikeId, String receiverId) {
QueryWrapper queryWrapper = QueryWrapper.create() QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_BIKE_ORDER.BIKE_ID.eq(bikeId)) .where(EBIKE_BIKE_ORDER.BIKE_ID.eq(bikeId))
.where(EBIKE_BIKE_ORDER.ORDER_TYPE.eq("2"))
.where(EBIKE_BIKE_ORDER.HANDLE_STATE.eq("0")); .where(EBIKE_BIKE_ORDER.HANDLE_STATE.eq("0"));
EbikeBikeOrder bikeOrder = this.mapper.selectOneByQuery(queryWrapper); EbikeBikeOrder bikeOrder = this.mapper.selectOneByQuery(queryWrapper);
if (bikeOrder == null){ if (bikeOrder == null){

View File

@ -6,6 +6,7 @@ import com.cdzy.common.model.ResGPSDto;
import com.cdzy.ebikereport.enums.BitSwitch; import com.cdzy.ebikereport.enums.BitSwitch;
import com.cdzy.ebikereport.utils.BinaryUtil; import com.cdzy.ebikereport.utils.BinaryUtil;
import com.cdzy.ebikereport.utils.RedisUtil; import com.cdzy.ebikereport.utils.RedisUtil;
import com.ebike.feign.clients.MaintenanceFeignClient;
import com.ebike.feign.clients.OperateFeignClient; import com.ebike.feign.clients.OperateFeignClient;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.data.geo.Point; import org.springframework.data.geo.Point;
@ -25,6 +26,9 @@ public class ReoprtHandler {
@Resource @Resource
private OperateFeignClient operateFeignClient; private OperateFeignClient operateFeignClient;
@Resource
private MaintenanceFeignClient maintenanceFeignClient;
/** /**
* 报文处理 * 报文处理
*/ */
@ -48,8 +52,8 @@ public class ReoprtHandler {
char isWheelSpin = binary.charAt(BitSwitch.IS_WHEEL_SPIN); char isWheelSpin = binary.charAt(BitSwitch.IS_WHEEL_SPIN);
char isMoving = binary.charAt(BitSwitch.IS_MOVING); char isMoving = binary.charAt(BitSwitch.IS_MOVING);
ResGPSDto resGpsDto = param.toJavaObject(ResGPSDto.class); ResGPSDto resGpsDto = param.toJavaObject(ResGPSDto.class);
if (resGpsDto.getSoc() < 20){ if (resGpsDto.getSoc() > 0 && resGpsDto.getSoc() < 20){
//TODO:生成换电工单 maintenanceFeignClient.changeBattery(deviceId);
} }
resGpsDto.setEcuSn(deviceId); resGpsDto.setEcuSn(deviceId);
resGpsDto.setHelmetExit(helmet); resGpsDto.setHelmetExit(helmet);