问题描述:车辆车牌号码的展示,杭州车牌电动车车牌前面都是杭州XXXXXXX,HBXXXXXXX,等等。现在客户要求根据电动二轮车,电动三轮车,车牌重新命名。比如电动二轮车,车牌号统一以数字2开头,组成纯7位数字;电动三轮车,车牌号同意以数字3开头,组成纯7位数字。
解决方法:原数据库表不动,重新建立一张数据库表,用来存储客户需要的车牌号码。通过字符串拼截取方法。
原来的车牌查询结果如图:
重新截取后结果,客户期望看到的结果:
具体步骤如下:
第一步在数据库中建立新的表
CREATE TABLE `cx_tracarnumber` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`carnumber` varchar(15) DEFAULT NULL,
`username` varchar(15) DEFAULT NULL,
`type` varchar(15) DEFAULT NULL,
`deviceid` varchar(15) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
有两点需要注意的id 是主键,且id 是自增长的。
第二步:
@Controller
@RequestMapping(value="/admin")
public class TranslateCarnumberController {
/**
* 车辆基本信息
*/
@Autowired
Car_Service car_Service;
@Autowired
CxTracarnumberService cxTracarnumberService;
@RequestMapping(value="/car/Trans_CarNumber")
public void Trans_CarNumber(){
CxTracarnumber cxTracarnumber = new CxTracarnumber();
List<Car> tarList = car_Service.selectCarList();
for (int i = 0; i <tarList.size(); i++) {
// 车辆类型 含有 二 则为 截取号码为 数字2 开头使用
if (tarList.get(i).getType().indexOf("二") != -1) {
// System.out.println("车辆类型 含有 二 则为 截取号码为 数字2 开头使用");
String carnumber = "2"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);
String username = tarList.get(i).getUsername();
String type =tarList.get(i).getType();
String deviceid = tarList.get(i).getDeviceid();
String id = tarList.get(i).getId();
cxTracarnumber.setCarnumber(carnumber);
cxTracarnumber.setUsername(username);
cxTracarnumber.setType(type);
cxTracarnumber.setDeviceid(deviceid);
// cxTracarnumber.setId(id+"");
cxTracarnumberService.insertSelective(cxTracarnumber);
}else{
// 车辆类型 含有 三 则为 截取号码为 数字3开头使用
// System.out.println("车辆类型 含有 三 则为 截取号码为 数字3开头使用");
String carnumber = "3"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);
String username = tarList.get(i).getUsername();
String type =tarList.get(i).getType();
String deviceid = tarList.get(i).getDeviceid();
cxTracarnumber.setCarnumber(carnumber);
cxTracarnumber.setUsername(username);
cxTracarnumber.setType(type);
cxTracarnumber.setDeviceid(deviceid);
cxTracarnumberService.insertSelective(cxTracarnumber);
}
}
}
// 判断一个字符串是否都为数字
public boolean isDigit(String strNum) {
return strNum.matches("[0-9]{1,}");
}
}
注意:
这里先进行车辆类型的判断,如果车辆类型中包含二,则为二轮车,车牌号以数字2开头。同理则为三轮车,车牌以数字3开头。
这个是字符串的截取。通过for循环,先获取车牌号,然后截取车牌号的后六位,则转为目标车牌号码。
String carnumber = "2"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);
最后将结果插入到数据库中。因为ID是自增长,所以不需要设置id。创建数据库表的时候,默认以1开始。
测试的时候执行该方法,可转为期望的结果。
《end》