From 987e80d65751233faebbf430aca4916f50020e37 Mon Sep 17 00:00:00 2001 From: 19173159168 Date: Sat, 27 Sep 2025 00:19:05 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CompanyController.java | 8 +++ .../operation/controller/ZcCarController.java | 17 +++++- .../controller/ZcRentCarRuleController.java | 24 +++++--- .../com/ruoyi/operation/domain/Company.java | 3 + .../ruoyi/operation/mapper/CompanyMapper.java | 2 +- .../ruoyi/operation/mapper/ZcCarMapper.java | 4 ++ .../operation/service/ICompanyService.java | 2 + .../operation/service/IZcCarService.java | 6 +- .../service/impl/CompanyServiceImpl.java | 11 ++++ .../service/impl/ZcCarServiceImpl.java | 61 +++++++++++++++---- .../operation/util/OperationConstants.java | 2 +- .../mapper/operation/CompanyMapper.xml | 3 + .../mapper/operation/ZcCarDamageMapper.xml | 1 + .../mapper/operation/ZcCarMapper.xml | 10 ++- .../mapper/operation/ZcCarModelMapper.xml | 3 +- .../operation/ZcRentBatteyRuleMapper.xml | 3 +- .../templates/operation/car/distribute.html | 2 +- 17 files changed, 130 insertions(+), 32 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyController.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyController.java index f3fa390..3500d1f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/CompanyController.java @@ -132,6 +132,10 @@ public class CompanyController extends BaseController { return error("新增失败,手机号码已存在"); } + if (Company.NOT_UNIQUE.equals(companyService.checkNameUnique(company))) + { + return error("新增失败,运营商名称'" + company.getCompanyName() + "'已存在"); + } company.setCreateBy(getLoginName()); int flag = companyService.insertCompany(company); if(flag > 0){ @@ -167,6 +171,10 @@ public class CompanyController extends BaseController { return error("修改失败,手机号码已存在"); } + if (Company.NOT_UNIQUE.equals(companyService.checkNameUnique(company))) + { + return error("新增失败,运营商名称'" + company.getCompanyName() + "'已存在"); + } company.setUpdateBy(getLoginName()); int flag = companyService.updateCompany(company); if(flag > 0){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarController.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarController.java index e0fc34b..2b7d0be 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcCarController.java @@ -111,7 +111,13 @@ public class ZcCarController extends BaseController // 校验 VIN 是否唯一 if (StringUtils.isNotEmpty(zcCar.getVin()) && OperationConstants.USER_VIN_NOT_UNIQUE.equals(zcCarService.checkVinUnique(zcCar))) { - return error("新增失败,车机号已存在"); + return error("新增失败,车架号已存在"); + } + if (OperationConstants.USER_VIN_NOT_UNIQUE.equals(zcCarService.checkLicensePlateUnique(zcCar))) { + return error("新增失败,车牌号已存在"); + } + if (OperationConstants.USER_VIN_NOT_UNIQUE.equals(zcCarService.checkLotNumberUnique(zcCar))) { + return error("新增失败,LOT识别号已存在"); } return toAjax(zcCarService.insertZcCar(zcCar)); } @@ -143,9 +149,14 @@ public class ZcCarController extends BaseController // 校验 VIN 是否唯一 if (StringUtils.isNotEmpty(zcCar.getVin()) && OperationConstants.USER_VIN_NOT_UNIQUE.equals(zcCarService.checkVinUnique(zcCar))) { - return error("修改失败,车机号已存在"); + return error("修改失败,车架号已存在"); + } + if (OperationConstants.USER_VIN_NOT_UNIQUE.equals(zcCarService.checkLicensePlateUnique(zcCar))) { + return error("新增失败,车牌号已存在"); + } + if (OperationConstants.USER_VIN_NOT_UNIQUE.equals(zcCarService.checkLotNumberUnique(zcCar))) { + return error("新增失败,LOT识别号已存在"); } - return toAjax(zcCarService.updateZcCar(zcCar)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcRentCarRuleController.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcRentCarRuleController.java index 7c5d2fc..916b64d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcRentCarRuleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/controller/ZcRentCarRuleController.java @@ -114,23 +114,31 @@ public class ZcRentCarRuleController extends BaseController @ResponseBody public AjaxResult addSave(@RequestParam(value = "batteryRules",required = false) List batteryRuleIds, ZcRentCarRule zcRentCarRule) { + StringBuffer remark = new StringBuffer(); // 如果是按天租,验证选择的租电套餐支持天数是否一致 - if("3".equals(zcRentCarRule.getRentalType())){ + if("2".equals(zcRentCarRule.getRentalType()) || "3".equals(zcRentCarRule.getRentalType())){ String[] stringArray = batteryRuleIds.stream() .map(String::valueOf) .toArray(String[]::new); List batteyRuleList = zcRentBatteyRuleService.selectZcRentBatteyRuleByIds(stringArray); for (ZcRentBatteyRule batteyRule : batteyRuleList) { - //2标识按天租,或者租电套餐1标识日租中租赁天数大于1天也为按天租 - Long duration= batteyRule.getDuration(); - if(batteyRule.getDurationType() == 2){ - duration = duration * 30; - } - if(!String.valueOf(duration).equals(String.valueOf(zcRentCarRule.getRentalDays()))){ - return error("选择租电套餐的租赁天数与租车套餐的租赁天数不一致。"); + if("3".equals(zcRentCarRule.getRentalType())) { + //2标识按天租,或者租电套餐1标识日租中租赁天数大于1天也为按天租 + Long duration = batteyRule.getDuration(); + if (batteyRule.getDurationType() == 2) { + duration = duration * 30; + } + if (!String.valueOf(duration).equals(String.valueOf(zcRentCarRule.getRentalDays()))) { + return error("选择租电套餐的租赁天数与租车套餐的租赁天数不一致。"); + } } + remark.append(batteyRule.getCityName()).append(batteyRule.getTitle()).append(","); } } + if("2".equals(zcRentCarRule.getRentalType())){ + zcRentCarRule.setRentalDays(1L); + } + zcRentCarRule.setRemark(remark.toString()); zcRentCarRule.setRuleCode(generateTimestampBasedCode()); zcRentCarRule.setCreateBy(getLoginName()); int flag = zcRentCarRuleService.insertZcRentCarRule(zcRentCarRule); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/Company.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/Company.java index d98227a..14eddd5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/Company.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/domain/Company.java @@ -179,6 +179,9 @@ public class Company extends BaseEntity /** */ private String extend5; + public final static String UNIQUE = "0"; + public final static String NOT_UNIQUE = "1"; + public void setId(Long id) { this.id = id; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/CompanyMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/CompanyMapper.java index c6d3a47..1f7e792 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/CompanyMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/CompanyMapper.java @@ -26,7 +26,7 @@ public interface CompanyMapper * @return 运营商对象 */ Company checkPhoneUnique(String phone); - + public Company checkNameUnique(String name); /** * 查询运营商列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarMapper.java index 4956c44..e2217e2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/mapper/ZcCarMapper.java @@ -63,4 +63,8 @@ public interface ZcCarMapper public int deleteZcCarByIds(String[] ids); public ZcCar checkVinUnique(String vin); + + public ZcCar checkLicensePlateUnique(String licensePlate); + + public ZcCar checkLotNumberUnique(String lotNumber); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/ICompanyService.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/ICompanyService.java index c70b2f0..dd3f977 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/ICompanyService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/ICompanyService.java @@ -73,4 +73,6 @@ public interface ICompanyService public int deleteCompanyById(Long id); public int changeStatus(Company company); + + public String checkNameUnique(Company company); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarService.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarService.java index e0ee666..1c6c137 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/IZcCarService.java @@ -63,12 +63,16 @@ public interface IZcCarService /** - * 校验车机号 (VIN) 是否唯一 + * 校验车架号 (VIN) 是否唯一 * * @return 是否唯一 (0:唯一, 1:不唯一) */ String checkVinUnique(ZcCar zcCar); + String checkLicensePlateUnique(ZcCar zcCar); + + String checkLotNumberUnique(ZcCar zcCar); + public int changeStatus(ZcCar zcCar); public String importCar(List carList, Boolean isUpdateSupport, SysUser user); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyServiceImpl.java index 907ae5f..62ab20b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/CompanyServiceImpl.java @@ -195,4 +195,15 @@ public class CompanyServiceImpl implements ICompanyService return flag; } + + @Override + public String checkNameUnique(Company company) { + Long id = StringUtils.isNull(company.getId()) ? -1L : company.getId(); + Company info = companyMapper.checkNameUnique(company.getCompanyName()); + if (StringUtils.isNotNull(info) && info.getId().longValue() != id.longValue()) + { + return Company.NOT_UNIQUE; + } + return Company.UNIQUE; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarServiceImpl.java index 67eba00..b865a4a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/service/impl/ZcCarServiceImpl.java @@ -125,16 +125,45 @@ public class ZcCarServiceImpl implements IZcCarService return zcCarMapper.deleteZcCarById(id); } - @Override - public String checkVinUnique(ZcCar zcCar) { + private String checkFieldUnique(ZcCar zcCar, String fieldName, Object fieldValue) { Long carId = StringUtils.isNull(zcCar.getId()) ? -1L : zcCar.getId(); - ZcCar info = zcCarMapper.checkVinUnique(zcCar.getVin()); - if (StringUtils.isNotNull(info) && info.getId().longValue() != carId.longValue()){ + ZcCar info = null; + + switch (fieldName) { + case "vin": + info = zcCarMapper.checkVinUnique((String) fieldValue); + break; + case "licensePlate": + info = zcCarMapper.checkLicensePlateUnique((String) fieldValue); + break; + case "lotNumber": + info = zcCarMapper.checkLotNumberUnique((String) fieldValue); + break; + default: + return OperationConstants.USER_VIN_UNIQUE; + } + + if (StringUtils.isNotNull(info) && info.getId().longValue() != carId.longValue()) { return OperationConstants.USER_VIN_NOT_UNIQUE; } return OperationConstants.USER_VIN_UNIQUE; } + @Override + public String checkVinUnique(ZcCar zcCar) { + return checkFieldUnique(zcCar, "vin", zcCar.getVin()); + } + + @Override + public String checkLicensePlateUnique(ZcCar zcCar) { + return checkFieldUnique(zcCar, "licensePlate", zcCar.getLicensePlate()); + } + + @Override + public String checkLotNumberUnique(ZcCar zcCar) { + return checkFieldUnique(zcCar, "lotNumber", zcCar.getLotNumber()); + } + @Override public int changeStatus(ZcCar zcCar) { zcCar.setUpdateTime(DateUtils.getNowDate()); @@ -170,8 +199,11 @@ public class ZcCarServiceImpl implements IZcCarService { // 验证是否存在 ZcCar u = zcCarMapper.checkVinUnique(car.getVin()); - if (StringUtils.isNull(u)) - { + ZcCar u2 = zcCarMapper.checkLicensePlateUnique(car.getLicensePlate()); + ZcCar u3 = zcCarMapper.checkLotNumberUnique(car.getLotNumber()); + + // 只有当所有唯一性校验都通过时才插入数据 + if (StringUtils.isNull(u) && StringUtils.isNull(u2) && StringUtils.isNull(u3)) { // 车辆归属字典转换 car.setBelongType(DictUtils.getDictValue("key_car_belong_type", car.getBelongType(), car.getBelongType())); // 设置运营商ID @@ -186,20 +218,23 @@ public class ZcCarServiceImpl implements IZcCarService car.setCreateBy(user.getLoginName()); this.insertZcCar(car); -// processedList.add(car); successNum++; - successMsg.append("
" + successNum + "、车机号 " + car.getVin() + " 导入成功"); - } - else - { + successMsg.append("
" + successNum + "导入成功"); + } else { failureNum++; - failureMsg.append("
" + failureNum + "、车机号 " + car.getVin() + " 已存在"); + if (StringUtils.isNotNull(u)) { + failureMsg.append("
" + failureNum + "、车架号 " + car.getVin() + " 已存在"); + } else if (StringUtils.isNotNull(u2)) { + failureMsg.append("
" + failureNum + "、车牌号 " + car.getLicensePlate() + " 已存在"); + } else if (StringUtils.isNotNull(u3)) { + failureMsg.append("
" + failureNum + "、Lot号 " + car.getLotNumber() + " 已存在"); + } } } catch (Exception e) { failureNum++; - String msg = "
" + failureNum + "、车机号 " + car.getVin() + " 导入失败:"; + String msg = "
" + failureNum + " 导入失败:"; failureMsg.append(msg + e.getMessage()); log.error(msg, e); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/operation/util/OperationConstants.java b/ruoyi-admin/src/main/java/com/ruoyi/operation/util/OperationConstants.java index c00605c..50f38da 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/operation/util/OperationConstants.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/operation/util/OperationConstants.java @@ -3,7 +3,7 @@ package com.ruoyi.operation.util; public class OperationConstants { /** - * 车机号 (VIN) 唯一 + * 车架号 (VIN) 唯一 */ public static final String USER_VIN_UNIQUE = "0"; public static final String USER_VIN_NOT_UNIQUE = "1"; diff --git a/ruoyi-admin/src/main/resources/mapper/operation/CompanyMapper.xml b/ruoyi-admin/src/main/resources/mapper/operation/CompanyMapper.xml index 786c9a1..dd34e8f 100644 --- a/ruoyi-admin/src/main/resources/mapper/operation/CompanyMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/operation/CompanyMapper.xml @@ -111,6 +111,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + insert into zc_company diff --git a/ruoyi-admin/src/main/resources/mapper/operation/ZcCarDamageMapper.xml b/ruoyi-admin/src/main/resources/mapper/operation/ZcCarDamageMapper.xml index f977687..4fd4899 100644 --- a/ruoyi-admin/src/main/resources/mapper/operation/ZcCarDamageMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/operation/ZcCarDamageMapper.xml @@ -50,6 +50,7 @@ - + + del_flag = 0 and vin like concat('%', #{vin}, '%') and license_plate like concat('%', #{licensePlate}, '%') and brand_id = #{brandId} @@ -86,7 +87,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + insert into zc_car diff --git a/ruoyi-admin/src/main/resources/mapper/operation/ZcCarModelMapper.xml b/ruoyi-admin/src/main/resources/mapper/operation/ZcCarModelMapper.xml index 0f87c09..ffd75a2 100644 --- a/ruoyi-admin/src/main/resources/mapper/operation/ZcCarModelMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/operation/ZcCarModelMapper.xml @@ -47,7 +47,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +