Parcourir la source

修改添加车辆时,同一个小区下不能绑定相同的车牌号的车辆

xuanyan il y a 4 ans
Parent
commit
2f875ed1bd

+ 9 - 8
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IParkingAreaClient.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiParam;
 import org.springblade.estate.entity.ParkingArea;
 import org.springblade.estate.vo.ParkingAreaVO;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -27,37 +28,37 @@ public interface IParkingAreaClient  {
     ParkingAreaVO detail(ParkingArea parkingArea);
 
 	/**
-	 * 查询 
+	 * 查询
 	 */
 	@GetMapping("/list")
-    List<ParkingAreaVO> list(ParkingArea parkingArea);
+    List<ParkingAreaVO> list(@SpringQueryMap ParkingArea parkingArea);
 
 
 
 	/**
-	 * 新增 
+	 * 新增
 	 */
 	@PostMapping("/save")
 	boolean save(@Valid @RequestBody ParkingArea parkingArea);
 
 	/**
-	 * 修改 
+	 * 修改
 	 */
 	@PostMapping("/update")
     boolean update(@Valid @RequestBody ParkingArea parkingArea);
 
 	/**
-	 * 新增或修改 
+	 * 新增或修改
 	 */
 	@PostMapping("/submit")
     boolean submit(@Valid @RequestBody ParkingArea parkingArea);
 
-	
+
 	/**
-	 * 删除 
+	 * 删除
 	 */
 	@PostMapping("/remove")
     boolean remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids);
 
-	
+
 }

+ 15 - 19
blade-service/estate/src/main/java/org/springblade/estate/controller/CarController.java

@@ -18,6 +18,7 @@ package org.springblade.estate.controller;
 
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.lettuce.core.models.role.RedisSentinelInstance;
@@ -165,25 +166,20 @@ public class CarController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入car")
 	public R submit(@Valid @RequestBody Car car) {
-		int tenantType = 1;//租户类型:默认为1-园区                0是园区
-		if (car.getResidentialId() != null) {
-			Residential search = new Residential();
-			search.setId(car.getResidentialId());
-			Residential residential = residentialClient.detail(search);
-			Assert.notNull(residential, "找不到车对应的小区");
-			car.setOrgPosition(residential.getOrgPosition());
-			car.setTenantId(residential.getTenantId());
-			car.setAgencyId(residential.getAgencyId());
-		} else {
-			Assert.notNull(car.getAgencyId(), "车所属园区/园区必选");
-			Agency search = new Agency();
-			search.setId(car.getAgencyId());
-			Agency agency = agencyClient.detail(search);
-			Assert.notNull(agency, "找不到车对应的园区/园区");
-			car.setOrgPosition(agency.getOrgPosition());
-			car.setTenantId(agency.getTenantId());
-
-		}
+		Assert.notNull(car.getAgencyId(), "车辆所属社区必选");
+		Agency agency = agencyClient.getById(car.getAgencyId());
+		Assert.notNull(agency, "车辆所属社区不存在");
+		Assert.notNull(car.getResidentialId(),"车辆所属小区必选");
+		Residential residential = residentialClient.getById(car.getResidentialId());
+		Assert.notNull(residential,"车辆所属小区不存在");
+		//判断同一个小区下是否已经存在相同车牌号的车辆
+		LambdaQueryWrapper<Car> lambdaQueryWrapper = new QueryWrapper<>(new Car()).lambda().eq(Car::getResidentialId,car.getResidentialId()).eq(Car::getNumber,car.getNumber());
+		List<Car> dbCarList = carService.selectList(lambdaQueryWrapper);
+		Assert.isTrue(dbCarList.size() == 0,"小区已经存在车辆");
+//		int tenantType = 1;//租户类型:默认为1-园区                0是社区
+		car.setOrgPosition(residential.getOrgPosition());
+		car.setTenantId(residential.getTenantId());
+		int tenantType;
 		TenantType search = new TenantType();
 		search.setTenantId(car.getTenantId());
 		TenantTypeVO tenantTypeVO = tenantTypeClient.detail(search);

+ 1 - 1
blade-service/estate/src/main/java/org/springblade/estate/feign/ParkingAreaClient.java

@@ -46,7 +46,7 @@ public class ParkingAreaClient implements IParkingAreaClient {
 
 	@Override
 	@GetMapping("/list")
-	public List<ParkingAreaVO> list(ParkingArea parkingArea) {
+	public List<ParkingAreaVO> list(@SpringQueryMap ParkingArea parkingArea) {
 		return ParkingAreaWrapper.build().listVO(parkingAreaService.list(Condition.getQueryWrapper(parkingArea)));
 	}
 

+ 7 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/ICarService.java

@@ -16,11 +16,14 @@
  */
 package org.springblade.estate.service;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import org.springblade.estate.entity.Car;
 import org.springblade.estate.vo.CarVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 车辆信息 服务类
  *
@@ -38,4 +41,8 @@ public interface ICarService extends BaseService<Car> {
 	 */
 	IPage<CarVO> selectCarPage(IPage<CarVO> page, CarVO car);
 
+	Car selectOne(Wrapper<Car> wrapper);
+
+	List<Car> selectList(Wrapper<Car>  wrapper);
+
 }

+ 11 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/impl/CarServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.estate.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import org.springblade.estate.entity.Car;
 import org.springblade.estate.vo.CarVO;
 import org.springblade.estate.mapper.CarMapper;
@@ -24,6 +25,8 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 车辆信息 服务实现类
  *
@@ -38,4 +41,12 @@ public class CarServiceImpl extends BaseServiceImpl<CarMapper, Car> implements I
 		return page.setRecords(baseMapper.selectCarPage(page, car));
 	}
 
+	@Override
+	public Car selectOne(Wrapper<Car>  wrapper){
+		return baseMapper.selectOne(wrapper);
+	}
+
+	public List<Car> selectList(Wrapper<Car>  wrapper){
+		return baseMapper.selectList(wrapper);
+	}
 }

+ 9 - 0
community-app-gateway/src/main/java/org/springblade/app/controller/CarController.java

@@ -11,6 +11,7 @@ import org.springblade.enterprise.entity.Staff;
 import org.springblade.enterprise.feign.IStaffClient;
 import org.springblade.enterprise.vo.StaffVO;
 import org.springblade.estate.dto.CarDTO;
+import org.springblade.estate.entity.Car;
 import org.springblade.estate.entity.ParkingSpace;
 import org.springblade.estate.feign.IApplyUserClient;
 import org.springblade.estate.feign.ICarClient;
@@ -23,7 +24,9 @@ import org.springframework.data.annotation.Transient;
 import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.*;
 
+import java.awt.*;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -65,6 +68,12 @@ public class CarController {
 
 		Boolean flag;
 		if (carDto.getId() == null) {
+			//新增时要判断同一个小区下是否已经存在车牌号
+			Car car = new Car();
+			car.setResidentialId(carDto.getResidentialId());
+			car.setNumber(carDto.getNumber());
+			List<CarVO> carList = carClient.list(car);
+			Assert.isTrue(carList.size() == 0, "相同小区下不能存在相同车牌号的车辆");
 			Long carId = this.carClient.save(carDto);
 			carDto.setId(carId);
 			flag = Objects.nonNull(carId);