From 12a0dcf99b69ed311f87f06c5b8d3d94c7f99214 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 12 六月 2023 15:16:04 +0800
Subject: [PATCH] optimize code
---
service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java | 430 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 316 insertions(+), 114 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 beb938d..0cb37a4 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
@@ -1,45 +1,55 @@
package com.java110.common.cmd.machineTranslate;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.context.ICmdDataFlowContext;
-import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.CommunityMemberDto;
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;
import com.java110.dto.owner.OwnerCarDto;
import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.parking.ParkingBoxAreaDto;
+import com.java110.dto.parkingCoupon.ParkingCouponCarDto;
import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
+import com.java110.intf.acct.IParkingCouponCarOrderV1InnerServiceSMO;
+import com.java110.intf.acct.IParkingCouponCarV1InnerServiceSMO;
import com.java110.intf.common.ICarInoutDetailV1InnerServiceSMO;
import com.java110.intf.common.ICarInoutPaymentV1InnerServiceSMO;
import com.java110.intf.common.ICarInoutV1InnerServiceSMO;
import com.java110.intf.common.IMachineInnerServiceSMO;
import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.IParkingBoxAreaV1InnerServiceSMO;
import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
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;
import com.java110.po.car.CarInoutPo;
import com.java110.po.car.OwnerCarPo;
-import com.java110.po.carInoutPayment.CarInoutPaymentPo;
import com.java110.po.fee.FeeAttrPo;
-import com.java110.po.fee.PayFeeDetailPo;
import com.java110.po.fee.PayFeePo;
import com.java110.po.owner.OwnerPo;
+import com.java110.po.parkingCouponCar.ParkingCouponCarPo;
+import com.java110.po.parkingCouponCarOrder.ParkingCouponCarOrderPo;
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 com.java110.utils.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
@@ -56,12 +66,12 @@
* // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
*/
@Java110Cmd(serviceCode = "machineTranslate.machineUploadCarLog")
-public class MachineUploadCarLogCmd extends AbstractServiceCmdListener {
+public class MachineUploadCarLogCmd extends Cmd {
- public static final int CAR_TYPE_MONTH = 0; //鏈堢杞�
+ public static final int CAR_TYPE_MONTH = 1001; //鏈堢杞�
public static final int CAR_TYPE_SUB = 1; //鎴愬憳杞﹁締
- public static final int CAR_TYPE_TEMP = 2; //涓存椂杞﹁締
- public static final int CAR_TYPE_NO_DATA = 3; //娌℃湁鏁版嵁
+ public static final int CAR_TYPE_TEMP = 1003; //涓存椂杞﹁締
+ public static final String CAR_TYPE_NO_DATA = "3"; //娌℃湁鏁版嵁
public static final String TEMP_CAR_OWNER = "涓存椂杞﹁溅涓�";
@@ -104,6 +114,18 @@
@Autowired
private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
+ @Autowired
+ private IParkingBoxAreaV1InnerServiceSMO parkingBoxAreaV1InnerServiceSMOImpl;
+
+ @Autowired
+ private ICarBlackWhiteV1InnerServiceSMO carBlackWhiteV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IParkingCouponCarV1InnerServiceSMO parkingCouponCarV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IParkingCouponCarOrderV1InnerServiceSMO parkingCouponCarOrderV1InnerServiceSMOImpl;
+
@Override
public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
Assert.hasKeyAndValue(reqJson, "machineCode", "蹇呭~锛岃濉啓璁惧缂栫爜");
@@ -116,40 +138,120 @@
public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
//鏄惁鏄复鏃惰溅
- int tempCar = CAR_TYPE_MONTH;
+ String tempCar = OwnerCarDto.LEASE_TYPE_TEMP;
+ String tempCarName = "涓存椂杞�";
//鏌ヨ璁惧淇℃伅
MachineDto machineDto = new MachineDto();
machineDto.setMachineCode(reqJson.getString("machineCode"));
machineDto.setCommunityId(reqJson.getString("communityId"));
- machineDto.setMachineTypeCd(MachineDto.MACHINE_TYPE_CAR);
List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
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;
+ 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 (hasInParkingArea(ownerCarDtos.get(0).getCarId(), reqJson.getString("carNum"), reqJson.getString("communityId"), paIds)) {
+ tempCar = CAR_TYPE_NO_DATA;
+ tempCarName = "涓存椂杞�";
+ }
+
+ int day = DateUtil.differentDaysUp(DateUtil.getCurrentDate(),ownerCarDtos.get(0).getEndTime());
+
+ if(day <= -5){
+ tempCar = CAR_TYPE_NO_DATA;
+ tempCarName = "涓存椂杞�";
}
}
+
+
+
//杩涘満澶勭悊
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);
}
+
+ }
+
+ private boolean hasInParkingArea(String carId, String carNum, String communityId, List<String> paIds) {
+ if (StringUtil.isEmpty(carId) || "-1".equals(carId)) {
+ return false;
+ }
+
+ // 鍒ゆ柇鏄惁涓轰富鍓溅杈�
+ OwnerCarDto carDto = new OwnerCarDto();
+ carDto.setPaIds(paIds.toArray(new String[paIds.size()]));
+ carDto.setCarNum(carNum);
+ carDto.setCarId(carId);
+ List<OwnerCarDto> tmpCarDtos = ownerCarV1InnerServiceSMOImpl.queryOwnerCars(carDto);
+ if (tmpCarDtos == null || tmpCarDtos.size() < 2) {
+ return false;
+ }
+
+ List<String> otherCarNums = new ArrayList<>();
+
+ for (OwnerCarDto tempCarDto : tmpCarDtos) {
+ if (tempCarDto.getCarNum().equals(carNum)) {
+ continue;
+ }
+ otherCarNums.add(tempCarDto.getCarNum());
+ }
+
+ if (otherCarNums.size() < 1) {
+ return false;
+ }
+
+ for (String otherCarNum : otherCarNums) {
+ //鍒ゆ柇杞﹁締鏄惁鍦� 鍦哄唴
+ CarInoutDto inoutDto = new CarInoutDto();
+ inoutDto.setCarNum(otherCarNum);
+ inoutDto.setPaIds(paIds.toArray(new String[paIds.size()]));
+ inoutDto.setState(CarInoutDto.STATE_IN);
+ List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(inoutDto);
+ if (carInoutDtos != null && carInoutDtos.size() > 0) {
+ return true;
+ }
+ }
+
+ return false;
}
@@ -160,12 +262,31 @@
* @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;
+ //杩涘満澶辫触璁板綍
+ if (reqJson.containsKey("state") && "5".equals(reqJson.getString("state"))) {
+ state = CarInoutDto.STATE_IN_FAIL;
+ }
+
+
+ String paId = "";
+ if (MachineDto.MACHINE_TYPE_CAR.equals(machineDto.getMachineTypeCd())) {
+ ParkingBoxAreaDto parkingBoxAreaDto = new ParkingBoxAreaDto();
+ parkingBoxAreaDto.setBoxId(machineDto.getLocationObjId());
+ parkingBoxAreaDto.setDefaultArea(ParkingBoxAreaDto.DEFAULT_AREA_TRUE);
+ List<ParkingBoxAreaDto> parkingBoxAreaDtos = parkingBoxAreaV1InnerServiceSMOImpl.queryParkingBoxAreas(parkingBoxAreaDto);
+ if (parkingBoxAreaDtos == null || parkingBoxAreaDtos.size() < 1) {
+ throw new CmdException("宀椾涵鏈厤缃仠杞﹀満" + machineDto.getLocationObjId());
+ }
+ paId = parkingBoxAreaDtos.get(0).getPaId();
+ }
CarInoutDto carInoutDto = new CarInoutDto();
carInoutDto.setCommunityId(reqJson.getString("communityId"));
carInoutDto.setCarNum(reqJson.getString("carNum"));
- carInoutDto.setPaId(machineDto.getLocationObjId());
+ carInoutDto.setPaId(paId);
carInoutDto.setStates(new String[]{
CarInoutDto.STATE_IN,
CarInoutDto.STATE_PAY,
@@ -173,11 +294,36 @@
});
List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
+ // 娌℃湁杩涘満璁板綍
if (carInoutDtos == null || carInoutDtos.size() < 1) {
//鍙兘杞﹁締寮傚父鎯呭喌 娌℃湁 杩涘満 琛ュ厖杩涘満璁板綍
reqJson.put("inTime", reqJson.getString("outTime"));
- carIn(reqJson, machineDto, tempCar);
+ //carIn(reqJson, machineDto, tempCar);
+ //淇濆瓨鍑哄満鏄庣粏
+ CarInoutDetailPo carInoutDetailPo = new CarInoutDetailPo();
+ carInoutDetailPo.setCarInout(CarInoutDetailDto.CAR_INOUT_OUT);
+ carInoutDetailPo.setCarNum(reqJson.getString("carNum"));
+ carInoutDetailPo.setCommunityId(reqJson.getString("communityId"));
+ carInoutDetailPo.setDetailId(GenerateCodeFactory.getDetailId(CODE_PREFIX_ID));
+ carInoutDetailPo.setInoutId("-1");
+ carInoutDetailPo.setMachineCode(machineDto.getMachineCode());
+ carInoutDetailPo.setMachineId(machineDto.getMachineId());
+ carInoutDetailPo.setPaId(paId);
+ carInoutDetailPo.setRemark(reqJson.getString("remark"));
+ carInoutDetailPo.setState(state);
+ 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("淇濆瓨鍑鸿褰曟槑缁嗗け璐�");
+ }
+ //鍑哄満澶辫触浜�
+ if (CarInoutDto.STATE_IN_FAIL.equals(state)) {
+ return;
+ }
+
carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
+
}
//淇濆瓨鍑哄満鏄庣粏
@@ -185,120 +331,121 @@
carInoutDetailPo.setCarInout(CarInoutDetailDto.CAR_INOUT_OUT);
carInoutDetailPo.setCarNum(reqJson.getString("carNum"));
carInoutDetailPo.setCommunityId(reqJson.getString("communityId"));
- carInoutDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+ carInoutDetailPo.setDetailId(GenerateCodeFactory.getDetailId(CODE_PREFIX_ID));
carInoutDetailPo.setInoutId(carInoutDtos.get(0).getInoutId());
carInoutDetailPo.setMachineCode(machineDto.getMachineCode());
carInoutDetailPo.setMachineId(machineDto.getMachineId());
- carInoutDetailPo.setPaId(machineDto.getLocationObjId());
+ carInoutDetailPo.setPaId(carInoutDtos.get(0).getPaId());
+ carInoutDetailPo.setRemark(reqJson.getString("remark"));
+ carInoutDetailPo.setPhotoJpg(reqJson.getString("photoJpg"));
+ carInoutDetailPo.setState(state);
+ 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) {
throw new CmdException("淇濆瓨鍑鸿褰曟槑缁嗗け璐�");
}
+ //鍑哄満澶辫触浜�
+ if (CarInoutDto.STATE_IN_FAIL.equals(state)) {
+ return;
+ }
+
//灏嗙姸鎬佹洿鏂颁负 鍑哄満鐘舵��
- 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);
+ updateCarInoutState(reqJson, carInoutDtos.get(0));
- if (flag < 1) {
- throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
- }
-
- //鍐欐敮浠樿褰�
- CarInoutPaymentPo carInoutPaymentPo = new CarInoutPaymentPo();
- carInoutPaymentPo.setPaymentId(GenerateCodeFactory.getGeneratorId("10"));
- carInoutPaymentPo.setCommunityId(carInoutDtos.get(0).getCommunityId());
- carInoutPaymentPo.setInoutId(carInoutDtos.get(0).getInoutId());
- carInoutPaymentPo.setPaId(carInoutDtos.get(0).getPaId());
- carInoutPaymentPo.setPayCharge(reqJson.getString("payCharge"));
- carInoutPaymentPo.setPayType(reqJson.getString("payType"));
- carInoutPaymentPo.setRealCharge(reqJson.getString("realCharge"));
- flag = carInoutPaymentV1InnerServiceSMOImpl.saveCarInoutPayment(carInoutPaymentPo);
- if (flag < 1) {
- throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
- }
-
- //鏈堢杞�
- if (tempCar != CAR_TYPE_NO_DATA && tempCar != CAR_TYPE_TEMP) {
+ //澶勭悊鍋滆溅鍔�
+ if (!reqJson.containsKey("pccIds") || reqJson.getJSONArray("pccIds").size() < 1) {
return;
}
- //濡傛灉鏈夎垂鐢� 鍒欑即璐�
- boolean hasFee = hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo);
+ JSONArray pccIds = reqJson.getJSONArray("pccIds");
+ String pccId = "";
+ ParkingCouponCarPo parkingCouponCarPo = null;
+ ParkingCouponCarOrderPo parkingCouponCarOrderPo = null;
+ for (int pccIdIndex = 0; pccIdIndex < pccIds.size(); pccIdIndex++) {
+ pccId = pccIds.getString(pccIdIndex);
- double realCharge = Double.parseDouble(carInoutPaymentPo.getRealCharge());
+ parkingCouponCarPo = new ParkingCouponCarPo();
+ parkingCouponCarPo.setPccId(pccId);
+ parkingCouponCarPo.setState(ParkingCouponCarDto.STATE_FINISH);
+ parkingCouponCarV1InnerServiceSMOImpl.updateParkingCouponCar(parkingCouponCarPo);
- //鏈夎垂鐢� 鎴栬�� 缂磋垂涓�0 鏃剁粨鏉�
- if (hasFee || realCharge == 0) {
- return;
+ parkingCouponCarOrderPo = new ParkingCouponCarOrderPo();
+ parkingCouponCarOrderPo.setOrderId(GenerateCodeFactory.getGeneratorId("11"));
+ parkingCouponCarOrderPo.setCarNum(reqJson.getString("carNum"));
+ parkingCouponCarOrderPo.setCarOutId(carInoutDetailPo.getDetailId());
+ parkingCouponCarOrderPo.setCommunityId(reqJson.getString("communityId"));
+ parkingCouponCarOrderPo.setMachineId(machineDto.getMachineId());
+ parkingCouponCarOrderPo.setMachineName(machineDto.getMachineName());
+ parkingCouponCarOrderPo.setPaId(carInoutDtos.get(0).getPaId());
+ parkingCouponCarOrderPo.setPccId(pccId);
+ parkingCouponCarOrderPo.setRemark("杞﹁締鍑哄彛鏍搁攢鍋滆溅鍔�");
+
+ parkingCouponCarOrderV1InnerServiceSMOImpl.saveParkingCouponCarOrder(parkingCouponCarOrderPo);
}
- // 鍒ゆ柇鏄惁瀛樺湪 涓存椂杞� 铏氭嫙涓氫富
- OwnerDto ownerDto = new OwnerDto();
- ownerDto.setCommunityId(reqJson.getString("communityId"));
- ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
- ownerDto.setOwnerFlag(OwnerDto.OWNER_FLAG_FALSE);
- ownerDto.setName(TEMP_CAR_OWNER);
- List<OwnerDto> ownerDtos = buildingOwnerV1InnerServiceSMOImpl.queryBuildingOwners(ownerDto);
- if (ownerDtos == null || ownerDtos.size() < 1) {
- return;
- }
- JSONObject paramIn = new JSONObject();
- paramIn.put("inTime", carInoutDtos.get(0).getInTime());
- paramIn.put("carId", reqJson.getString("carId"));
- paramIn.put("communityId", carInoutDtos.get(0).getCommunityId());
- paramIn.put("inoutId", carInoutDtos.get(0).getInoutId());
- paramIn.put("ownerId", ownerDtos.get(0).getMemberId());
- saveTempCarFee(paramIn, machineDto);
- //鍐嶅幓缂磋垂
- hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo);
}
- private boolean hasFeeAndPayFee(CarInoutDto carInoutDto, JSONObject reqJson, CarInoutPo carInoutPo, CarInoutPaymentPo carInoutPaymentPo) {
+ private void updateCarInoutState(JSONObject reqJson, CarInoutDto carInoutDto) {
+ int flag;
+ String requestId = DistributedLock.getLockUUID();
+ String key = "updateInoutState_" + carInoutDto.getInoutId();
+ try {
+ DistributedLock.waitGetDistributedLock(key, requestId);
- FeeAttrDto feeAttrDto = new FeeAttrDto();
- feeAttrDto.setCommunityId(carInoutPo.getCommunityId());
- feeAttrDto.setSpecCd(FeeAttrDto.SPEC_CD_CAR_INOUT_ID);
- feeAttrDto.setValue(carInoutPo.getInoutId());
- feeAttrDto.setState(FeeDto.STATE_DOING);
- List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFeeByAttr(feeAttrDto);
- if (feeDtos == null || feeDtos.size() < 1) {
- return false;
+
+ 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);
}
- PayFeePo payFeePo = new PayFeePo();
- payFeePo.setState(FeeDto.STATE_FINISH);
- payFeePo.setFeeId(feeDtos.get(0).getFeeId());
- payFeePo.setEndTime(carInoutPo.getOutTime());
- payFeePo.setCommunityId(feeDtos.get(0).getCommunityId());
- int flag = feeInnerServiceSMOImpl.updateFee(payFeePo);
- if (flag < 1) {
- throw new CmdException("鏇存柊璐圭敤澶辫触");
- }
-
-
- PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
- payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
- payFeeDetailPo.setPrimeRate("1.00");
- FeeDto feeDto = feeDtos.get(0);
- payFeeDetailPo.setStartTime(DateUtil.getFormatTimeString(feeDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
- payFeeDetailPo.setEndTime(carInoutPo.getOutTime());
- payFeeDetailPo.setCommunityId(carInoutDto.getCommunityId());
- payFeeDetailPo.setCycles("1");
- payFeeDetailPo.setReceivableAmount(carInoutPaymentPo.getPayCharge());
- payFeeDetailPo.setReceivedAmount(carInoutPaymentPo.getRealCharge());
- payFeeDetailPo.setFeeId(feeDto.getFeeId());
-
- flag = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo);
- if (flag < 1) {
- throw new CmdException("鏇存柊璐圭敤澶辫触");
- }
- return true;
}
/**
@@ -308,15 +455,34 @@
* @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"))) {
+ state = CarInoutDto.STATE_IN_FAIL;
+ }
+
+ String paId = machineDto.getLocationObjId();
+
+ if (MachineDto.MACHINE_TYPE_CAR.equals(machineDto.getMachineTypeCd())) {
+ ParkingBoxAreaDto parkingBoxAreaDto = new ParkingBoxAreaDto();
+ parkingBoxAreaDto.setBoxId(machineDto.getLocationObjId());
+ parkingBoxAreaDto.setDefaultArea(ParkingBoxAreaDto.DEFAULT_AREA_TRUE);
+ List<ParkingBoxAreaDto> parkingBoxAreaDtos = parkingBoxAreaV1InnerServiceSMOImpl.queryParkingBoxAreas(parkingBoxAreaDto);
+ if (parkingBoxAreaDtos == null || parkingBoxAreaDtos.size() < 1) {
+ throw new CmdException("宀椾涵鏈厤缃仠杞﹀満" + machineDto.getLocationObjId());
+ }
+ paId = parkingBoxAreaDtos.get(0).getPaId();
+ }
+
//淇濆瓨
CarInoutPo carInoutPo = new CarInoutPo();
carInoutPo.setCarNum(reqJson.getString("carNum"));
carInoutPo.setCommunityId(reqJson.getString("communityId"));
carInoutPo.setInoutId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
carInoutPo.setInTime(reqJson.getString("inTime"));
- carInoutPo.setState(CarInoutDto.STATE_IN);
- carInoutPo.setPaId(machineDto.getLocationObjId());
+ carInoutPo.setState(state);
+ carInoutPo.setPaId(paId);
int flag = carInoutV1InnerServiceSMOImpl.saveCarInout(carInoutPo);
if (flag < 1) {
@@ -329,18 +495,43 @@
carInoutDetailPo.setCarInout(CarInoutDetailDto.CAR_INOUT_IN);
carInoutDetailPo.setCarNum(reqJson.getString("carNum"));
carInoutDetailPo.setCommunityId(reqJson.getString("communityId"));
- carInoutDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+ carInoutDetailPo.setDetailId(GenerateCodeFactory.getDetailId(CODE_PREFIX_ID));
carInoutDetailPo.setInoutId(carInoutPo.getInoutId());
carInoutDetailPo.setMachineCode(machineDto.getMachineCode());
carInoutDetailPo.setMachineId(machineDto.getMachineId());
- carInoutDetailPo.setPaId(machineDto.getLocationObjId());
+ carInoutDetailPo.setPaId(paId);
+ carInoutDetailPo.setState(state);
+ carInoutDetailPo.setRemark(reqJson.getString("remark"));
+ 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;
}
@@ -362,7 +553,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);
}
@@ -496,6 +687,16 @@
*/
private void saveTempCar(JSONObject reqJson, MachineDto machineDto) {
+ OwnerCarDto ownerCarDto = new OwnerCarDto();
+ ownerCarDto.setCarNum(reqJson.getString("carNum"));
+ ownerCarDto.setCommunityId(reqJson.getString("communityId"));
+ List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+
+ if (ownerCarDtos != null && ownerCarDtos.size() > 0) {
+ reqJson.put("carId", ownerCarDtos.get(0).getCarId());
+ return;
+ }
+
OwnerCarPo ownerCarPo = new OwnerCarPo();
ownerCarPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
ownerCarPo.setCarId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId));
@@ -512,6 +713,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