From a24b7249257a8eb23f610f9fce3f540c880e5d54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 27 十月 2022 21:44:55 +0800
Subject: [PATCH] 门禁进场短信功能开发完成

---
 service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java |  205 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 127 insertions(+), 78 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 1349b9e..e5c19aa 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,5 +1,6 @@
 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;
@@ -18,7 +19,10 @@
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.parkingBoxArea.ParkingBoxAreaDto;
+import com.java110.dto.parkingCouponCar.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;
@@ -41,7 +45,10 @@
 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 org.springframework.beans.factory.annotation.Autowired;
@@ -114,6 +121,12 @@
     @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", "蹇呭~锛岃濉啓璁惧缂栫爜");
@@ -127,7 +140,7 @@
 
         //鏄惁鏄复鏃惰溅
         String tempCar = OwnerCarDto.LEASE_TYPE_TEMP;
-        String tempCarName ="涓存椂杞�";
+        String tempCarName = "涓存椂杞�";
 
 
         //鏌ヨ璁惧淇℃伅
@@ -138,10 +151,21 @@
 
         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);
 
         //璇存槑鏄复鏃惰溅
@@ -152,10 +176,10 @@
             reqJson.put("carId", ownerCarDtos.get(0).getCarId());
             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;
+            if (ownerCarDtos.size() > 1) {
+                for (OwnerCarDto tmpOwnerCarDto : ownerCarDtos) {
+                    if (OwnerCarDto.LEASE_TYPE_TEMP.equals(tmpOwnerCarDto.getLeaseType())) {
+                        continue;
                     }
                     tempCar = tmpOwnerCarDto.getLeaseType();
                     tempCarName = tmpOwnerCarDto.getLeaseTypeName();
@@ -166,9 +190,9 @@
 
         //杩涘満澶勭悊
         if (MachineDto.DIRECTION_IN.equals(machineDtos.get(0).getDirection())) {
-            carIn(reqJson, machineDtos.get(0), tempCar,tempCarName);
+            carIn(reqJson, machineDtos.get(0), tempCar, tempCarName);
         } else {
-            carOut(reqJson, machineDtos.get(0), tempCar,tempCarName);
+            carOut(reqJson, machineDtos.get(0), tempCar, tempCarName);
         }
 
     }
@@ -180,7 +204,7 @@
      * @param machineDto
      * @param tempCar
      */
-    private void carOut(JSONObject reqJson, MachineDto machineDto, String tempCar,String tempCarName) {
+    private void carOut(JSONObject reqJson, MachineDto machineDto, String tempCar, String tempCarName) {
 
         String state = CarInoutDto.STATE_OUT;
         //杩涘満澶辫触璁板綍
@@ -230,6 +254,7 @@
             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("淇濆瓨鍑鸿褰曟槑缁嗗け璐�");
@@ -251,26 +276,27 @@
         carInoutDetailPo.setMachineId(machineDto.getMachineId());
         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)){
+        if (CAR_TYPE_NO_DATA.equals(tempCar)) {
             carInoutDetailPo.setCarType(OwnerCarDto.LEASE_TYPE_TEMP);
-            carInoutDetailPo.setCarTypeName(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())){
+            if (carBlackWhiteDtos != null && carBlackWhiteDtos.size() > 0) {
+                if (CarBlackWhiteDto.BLACK_WHITE_BLACK.equals(carBlackWhiteDtos.get(0).getBlackWhite())) {
                     carInoutDetailPo.setCarType("B");
                     carInoutDetailPo.setCarTypeName("榛戝悕鍗�");
-                }else{
+                } else {
                     carInoutDetailPo.setCarType("W");
                     carInoutDetailPo.setCarTypeName("鐧藉悕鍗�");
                 }
             }
-        }else{
+        } else {
             carInoutDetailPo.setCarType(tempCar);
             carInoutDetailPo.setCarTypeName(tempCarName);
         }
@@ -287,66 +313,78 @@
 
         //灏嗙姸鎬佹洿鏂颁负 鍑哄満鐘舵��
 
-        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("鏇存柊鍑哄満鏃堕棿澶辫触");
+        //澶勭悊鍋滆溅鍔�
+        if(!reqJson.containsKey("pccIds") || reqJson.getJSONArray("pccIds").size()<1){
+            return ;
         }
 
-        //鍐欐敮浠樿褰�
-//        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) {
-//            return;
-//        }
-//
-//        //濡傛灉鏈夎垂鐢� 鍒欑即璐�
-//        boolean hasFee = hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo);
-//
-//        double realCharge = Double.parseDouble(carInoutPaymentPo.getRealCharge());
-//
-//        //鏈夎垂鐢� 鎴栬�� 缂磋垂涓�0 鏃剁粨鏉�
-//        if (hasFee || realCharge == 0) {
-//            return;
-//        }
-//        // 鍒ゆ柇鏄惁瀛樺湪 涓存椂杞� 铏氭嫙涓氫富
-//        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);
+        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);
+
+            parkingCouponCarPo = new ParkingCouponCarPo();
+            parkingCouponCarPo.setPccId(pccId);
+            parkingCouponCarPo.setState(ParkingCouponCarDto.STATE_FINISH);
+            parkingCouponCarV1InnerServiceSMOImpl.updateParkingCouponCar(parkingCouponCarPo);
+
+            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);
+        }
+
+    }
+
+    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) {
@@ -397,7 +435,7 @@
      * @param machineDto
      * @param tempCar
      */
-    private void carIn(JSONObject reqJson, MachineDto machineDto, String tempCar,String tempCarName) {
+    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"))) {
@@ -444,7 +482,8 @@
         carInoutDetailPo.setPaId(paId);
         carInoutDetailPo.setState(state);
         carInoutDetailPo.setRemark(reqJson.getString("remark"));
-        if(CAR_TYPE_NO_DATA.equals(tempCar)){
+        carInoutDetailPo.setPhotoJpg(reqJson.getString("photoJpg"));
+        if (CAR_TYPE_NO_DATA.equals(tempCar)) {
             carInoutDetailPo.setCarType(OwnerCarDto.LEASE_TYPE_TEMP);
             carInoutDetailPo.setCarTypeName("涓存椂杞�");
             //妫�鏌ユ槸鍚︿负榛戠櫧鍚嶅崟
@@ -453,16 +492,16 @@
             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())){
+            if (carBlackWhiteDtos != null && carBlackWhiteDtos.size() > 0) {
+                if (CarBlackWhiteDto.BLACK_WHITE_BLACK.equals(carBlackWhiteDtos.get(0).getBlackWhite())) {
                     carInoutDetailPo.setCarType("B");
                     carInoutDetailPo.setCarTypeName("榛戝悕鍗�");
-                }else{
+                } else {
                     carInoutDetailPo.setCarType("W");
                     carInoutDetailPo.setCarTypeName("鐧藉悕鍗�");
                 }
             }
-        }else{
+        } else {
             carInoutDetailPo.setCarType(tempCar);
             carInoutDetailPo.setCarTypeName(tempCarName);
         }
@@ -472,7 +511,7 @@
             throw new CmdException("淇濆瓨鍏ヨ褰曟槑缁嗗け璐�");
         }
         //鏈堢杞�
-        if (!OwnerCarDto.LEASE_TYPE_TEMP.equals(tempCar)) {
+        if (!OwnerCarDto.LEASE_TYPE_TEMP.equals(carInoutDetailPo.getCarType())) {
             return;
         }
 
@@ -628,6 +667,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));

--
Gitblit v1.8.0