From 75bf0fa6a3e113bd77191ace7e46f557b27552ee Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 19 九月 2022 18:55:42 +0800
Subject: [PATCH] 优化代码
---
service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java | 154 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 126 insertions(+), 28 deletions(-)
diff --git a/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java b/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java
index 0b67db8..55b512d 100644
--- a/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java
@@ -11,6 +11,7 @@
import com.java110.dto.fee.FeeAttrDto;
import com.java110.dto.fee.FeeConfigDto;
import com.java110.dto.fee.FeeDto;
+import com.java110.dto.machine.CarBlackWhiteDto;
import com.java110.dto.machine.CarInoutDetailDto;
import com.java110.dto.machine.CarInoutDto;
import com.java110.dto.machine.MachineDto;
@@ -29,6 +30,7 @@
import com.java110.intf.fee.IFeeInnerServiceSMO;
import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO;
import com.java110.intf.user.IBuildingOwnerV1InnerServiceSMO;
+import com.java110.intf.user.ICarBlackWhiteV1InnerServiceSMO;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
import com.java110.po.car.CarInoutDetailPo;
@@ -40,6 +42,7 @@
import com.java110.po.fee.PayFeePo;
import com.java110.po.owner.OwnerPo;
import com.java110.utils.exception.CmdException;
+import com.java110.utils.lock.DistributedLock;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
@@ -63,7 +66,7 @@
public static final int CAR_TYPE_MONTH = 1001; //鏈堢杞�
public static final int CAR_TYPE_SUB = 1; //鎴愬憳杞﹁締
public static final int CAR_TYPE_TEMP = 1003; //涓存椂杞﹁締
- public static final int CAR_TYPE_NO_DATA = 3; //娌℃湁鏁版嵁
+ public static final String CAR_TYPE_NO_DATA = "3"; //娌℃湁鏁版嵁
public static final String TEMP_CAR_OWNER = "涓存椂杞﹁溅涓�";
@@ -109,6 +112,9 @@
@Autowired
private IParkingBoxAreaV1InnerServiceSMO parkingBoxAreaV1InnerServiceSMOImpl;
+ @Autowired
+ private ICarBlackWhiteV1InnerServiceSMO carBlackWhiteV1InnerServiceSMOImpl;
+
@Override
public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
Assert.hasKeyAndValue(reqJson, "machineCode", "蹇呭~锛岃濉啓璁惧缂栫爜");
@@ -121,7 +127,8 @@
public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
//鏄惁鏄复鏃惰溅
- int tempCar = CAR_TYPE_MONTH;
+ String tempCar = OwnerCarDto.LEASE_TYPE_TEMP;
+ String tempCarName = "涓存椂杞�";
//鏌ヨ璁惧淇℃伅
@@ -132,32 +139,48 @@
Assert.listOnlyOne(machineDtos, "璁惧涓嶅瓨鍦�");
+ List<String> paIds = new ArrayList<>();
+ ParkingBoxAreaDto parkingBoxAreaDto = new ParkingBoxAreaDto();
+ parkingBoxAreaDto.setBoxId(machineDto.getLocationObjId());
+ List<ParkingBoxAreaDto> parkingBoxAreaDtos = parkingBoxAreaV1InnerServiceSMOImpl.queryParkingBoxAreas(parkingBoxAreaDto);
+ if (parkingBoxAreaDtos != null && parkingBoxAreaDtos.size() > 0) {
+ for (ParkingBoxAreaDto parkingBoxAreaDto1 : parkingBoxAreaDtos) {
+ paIds.add(parkingBoxAreaDto1.getPaId());
+ }
+ }
+
//鏌ヨ杞﹁締
OwnerCarDto ownerCarDto = new OwnerCarDto();
ownerCarDto.setCarNum(reqJson.getString("carNum"));
ownerCarDto.setCommunityId(reqJson.getString("communityId"));
+ ownerCarDto.setPaIds(paIds.toArray(new String[paIds.size()]));
List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
//璇存槑鏄复鏃惰溅
if (ownerCarDtos == null || ownerCarDtos.size() == 0) {
tempCar = CAR_TYPE_NO_DATA;
+ tempCarName = "涓存椂杞�";
} else {
reqJson.put("carId", ownerCarDtos.get(0).getCarId());
- if (OwnerCarDto.CAR_TYPE_TEMP.equals(ownerCarDtos.get(0).getCarTypeCd())) {
- tempCar = CAR_TYPE_TEMP;
- }
- // 鏈堢杞﹁繃鏈� 鍚庡氨鏄复鏃惰溅
- if (ownerCarDtos.get(0).getEndTime().before(DateUtil.getCurrentDate())) {
- tempCar = CAR_TYPE_TEMP;
+ tempCar = ownerCarDtos.get(0).getLeaseType();
+ tempCarName = ownerCarDtos.get(0).getLeaseTypeName();
+ if (ownerCarDtos.size() > 1) {
+ for (OwnerCarDto tmpOwnerCarDto : ownerCarDtos) {
+ if (OwnerCarDto.LEASE_TYPE_TEMP.equals(tmpOwnerCarDto.getLeaseType())) {
+ continue;
+ }
+ tempCar = tmpOwnerCarDto.getLeaseType();
+ tempCarName = tmpOwnerCarDto.getLeaseTypeName();
+ }
}
}
//杩涘満澶勭悊
if (MachineDto.DIRECTION_IN.equals(machineDtos.get(0).getDirection())) {
- carIn(reqJson, machineDtos.get(0), tempCar);
+ carIn(reqJson, machineDtos.get(0), tempCar, tempCarName);
} else {
- carOut(reqJson, machineDtos.get(0), tempCar);
+ carOut(reqJson, machineDtos.get(0), tempCar, tempCarName);
}
}
@@ -169,7 +192,7 @@
* @param machineDto
* @param tempCar
*/
- private void carOut(JSONObject reqJson, MachineDto machineDto, int tempCar) {
+ private void carOut(JSONObject reqJson, MachineDto machineDto, String tempCar, String tempCarName) {
String state = CarInoutDto.STATE_OUT;
//杩涘満澶辫触璁板綍
@@ -218,7 +241,8 @@
carInoutDetailPo.setPaId(paId);
carInoutDetailPo.setRemark(reqJson.getString("remark"));
carInoutDetailPo.setState(state);
- carInoutDetailPo.setCarType(tempCar == CAR_TYPE_NO_DATA ? CAR_TYPE_TEMP + "" : tempCar + "");
+ carInoutDetailPo.setCarType(CAR_TYPE_NO_DATA.equals(tempCar) ? OwnerCarDto.LEASE_TYPE_TEMP + "" : tempCar + "");
+ carInoutDetailPo.setCarTypeName(CAR_TYPE_NO_DATA.equals(tempCar) ? "涓存椂杞�" : tempCarName);
int flag = carInoutDetailV1InnerServiceSMOImpl.saveCarInoutDetail(carInoutDetailPo);
if (flag < 1) {
throw new CmdException("淇濆瓨鍑鸿褰曟槑缁嗗け璐�");
@@ -240,8 +264,30 @@
carInoutDetailPo.setMachineId(machineDto.getMachineId());
carInoutDetailPo.setPaId(carInoutDtos.get(0).getPaId());
carInoutDetailPo.setRemark(reqJson.getString("remark"));
+ carInoutDetailPo.setPhotoJpg(reqJson.getString("photoJpg"));
carInoutDetailPo.setState(state);
- carInoutDetailPo.setCarType(tempCar == CAR_TYPE_NO_DATA ? CAR_TYPE_TEMP + "" : tempCar + "");
+ if (CAR_TYPE_NO_DATA.equals(tempCar)) {
+ carInoutDetailPo.setCarType(OwnerCarDto.LEASE_TYPE_TEMP);
+ carInoutDetailPo.setCarTypeName("涓存椂杞�");
+ //妫�鏌ユ槸鍚︿负榛戠櫧鍚嶅崟
+ CarBlackWhiteDto carBlackWhiteDto = new CarBlackWhiteDto();
+ carBlackWhiteDto.setCarNum(reqJson.getString("carNum"));
+ carBlackWhiteDto.setPaId(carInoutDtos.get(0).getPaId());
+ carBlackWhiteDto.setValidity("Y");
+ List<CarBlackWhiteDto> carBlackWhiteDtos = carBlackWhiteV1InnerServiceSMOImpl.queryCarBlackWhites(carBlackWhiteDto);
+ if (carBlackWhiteDtos != null && carBlackWhiteDtos.size() > 0) {
+ if (CarBlackWhiteDto.BLACK_WHITE_BLACK.equals(carBlackWhiteDtos.get(0).getBlackWhite())) {
+ carInoutDetailPo.setCarType("B");
+ carInoutDetailPo.setCarTypeName("榛戝悕鍗�");
+ } else {
+ carInoutDetailPo.setCarType("W");
+ carInoutDetailPo.setCarTypeName("鐧藉悕鍗�");
+ }
+ }
+ } else {
+ carInoutDetailPo.setCarType(tempCar);
+ carInoutDetailPo.setCarTypeName(tempCarName);
+ }
int flag = carInoutDetailV1InnerServiceSMOImpl.saveCarInoutDetail(carInoutDetailPo);
if (flag < 1) {
@@ -255,17 +301,7 @@
//灏嗙姸鎬佹洿鏂颁负 鍑哄満鐘舵��
- CarInoutPo carInoutPo = new CarInoutPo();
- carInoutPo.setPaId(carInoutDtos.get(0).getPaId());
- carInoutPo.setOutTime(reqJson.getString("outTime"));
- carInoutPo.setInoutId(carInoutDtos.get(0).getInoutId());
- carInoutPo.setCommunityId(carInoutDtos.get(0).getCommunityId());
- carInoutPo.setState(CarInoutDto.STATE_OUT);
- flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo);
-
- if (flag < 1) {
- throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
- }
+ updateCarInoutState(reqJson, carInoutDtos.get(0));
//鍐欐敮浠樿褰�
// CarInoutPaymentPo carInoutPaymentPo = new CarInoutPaymentPo();
@@ -317,6 +353,45 @@
// hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo);
}
+ private void updateCarInoutState(JSONObject reqJson, CarInoutDto carInoutDto) {
+ int flag;
+ String requestId = DistributedLock.getLockUUID();
+ String key = "updateInoutState_" + carInoutDto.getInoutId();
+ try {
+ DistributedLock.waitGetDistributedLock(key, requestId);
+
+
+ CarInoutDto newCarInoutDto = new CarInoutDto();
+ newCarInoutDto.setCommunityId(reqJson.getString("communityId"));
+ newCarInoutDto.setCarNum(reqJson.getString("carNum"));
+ newCarInoutDto.setPaId(carInoutDto.getPaId());
+ newCarInoutDto.setStates(new String[]{
+ CarInoutDto.STATE_IN,
+ CarInoutDto.STATE_PAY,
+ CarInoutDto.STATE_REPAY
+ });
+ List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(newCarInoutDto);
+
+ if(carInoutDtos == null || carInoutDtos.size()<1){
+ return ;
+ }
+
+ CarInoutPo carInoutPo = new CarInoutPo();
+ carInoutPo.setPaId(carInoutDto.getPaId());
+ carInoutPo.setOutTime(reqJson.getString("outTime"));
+ carInoutPo.setInoutId(carInoutDto.getInoutId());
+ carInoutPo.setCommunityId(carInoutDto.getCommunityId());
+ carInoutPo.setState(CarInoutDto.STATE_OUT);
+ flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo);
+
+ if (flag < 1) {
+ throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
+ }
+ } finally {
+ DistributedLock.releaseDistributedLock(requestId, key);
+ }
+ }
+
private boolean hasFeeAndPayFee(CarInoutDto carInoutDto, JSONObject reqJson, CarInoutPo carInoutPo, CarInoutPaymentPo carInoutPaymentPo) {
FeeAttrDto feeAttrDto = new FeeAttrDto();
@@ -365,7 +440,7 @@
* @param machineDto
* @param tempCar
*/
- private void carIn(JSONObject reqJson, MachineDto machineDto, int tempCar) {
+ private void carIn(JSONObject reqJson, MachineDto machineDto, String tempCar, String tempCarName) {
String state = CarInoutDto.STATE_IN;
//杩涘満澶辫触璁板綍
if (reqJson.containsKey("state") && "5".equals(reqJson.getString("state"))) {
@@ -412,14 +487,36 @@
carInoutDetailPo.setPaId(paId);
carInoutDetailPo.setState(state);
carInoutDetailPo.setRemark(reqJson.getString("remark"));
- carInoutDetailPo.setCarType(tempCar == CAR_TYPE_NO_DATA ? CAR_TYPE_TEMP + "" : tempCar + "");
+ carInoutDetailPo.setPhotoJpg(reqJson.getString("photoJpg"));
+ if (CAR_TYPE_NO_DATA.equals(tempCar)) {
+ carInoutDetailPo.setCarType(OwnerCarDto.LEASE_TYPE_TEMP);
+ carInoutDetailPo.setCarTypeName("涓存椂杞�");
+ //妫�鏌ユ槸鍚︿负榛戠櫧鍚嶅崟
+ CarBlackWhiteDto carBlackWhiteDto = new CarBlackWhiteDto();
+ carBlackWhiteDto.setCarNum(reqJson.getString("carNum"));
+ carBlackWhiteDto.setPaId(paId);
+ carBlackWhiteDto.setValidity("Y");
+ List<CarBlackWhiteDto> carBlackWhiteDtos = carBlackWhiteV1InnerServiceSMOImpl.queryCarBlackWhites(carBlackWhiteDto);
+ if (carBlackWhiteDtos != null && carBlackWhiteDtos.size() > 0) {
+ if (CarBlackWhiteDto.BLACK_WHITE_BLACK.equals(carBlackWhiteDtos.get(0).getBlackWhite())) {
+ carInoutDetailPo.setCarType("B");
+ carInoutDetailPo.setCarTypeName("榛戝悕鍗�");
+ } else {
+ carInoutDetailPo.setCarType("W");
+ carInoutDetailPo.setCarTypeName("鐧藉悕鍗�");
+ }
+ }
+ } else {
+ carInoutDetailPo.setCarType(tempCar);
+ carInoutDetailPo.setCarTypeName(tempCarName);
+ }
flag = carInoutDetailV1InnerServiceSMOImpl.saveCarInoutDetail(carInoutDetailPo);
if (flag < 1) {
throw new CmdException("淇濆瓨鍏ヨ褰曟槑缁嗗け璐�");
}
//鏈堢杞�
- if (tempCar != CAR_TYPE_NO_DATA && tempCar != CAR_TYPE_TEMP) {
+ if (!OwnerCarDto.LEASE_TYPE_TEMP.equals(carInoutDetailPo.getCarType())) {
return;
}
@@ -441,7 +538,7 @@
} else {
reqJson.put("ownerId", ownerDtos.get(0).getMemberId());
}
- if (tempCar == CAR_TYPE_NO_DATA) {
+ if (CAR_TYPE_NO_DATA.equals(tempCar)) {
saveTempCar(reqJson, machineDto);
}
@@ -591,6 +688,7 @@
ownerCarPo.setRemark("涓存椂杞� 鐗╄仈缃戝悓姝�");
ownerCarPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
ownerCarPo.setUserId("-1");
+ ownerCarPo.setLeaseType(OwnerCarDto.LEASE_TYPE_TEMP);
int flag = ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo);
if (flag < 1) {
--
Gitblit v1.8.0