From 6eb064b4aa583bc8be55b23a82badc5d8442cbb1 Mon Sep 17 00:00:00 2001
From: xiaogang <905166056@qq.com>
Date: 星期三, 25 五月 2022 15:27:38 +0800
Subject: [PATCH] 1、优化访客预约等相关设置2、增加积分抵扣

---
 service-api/src/main/java/com/java110/api/listener/visit/UpdateVisitListener.java |  173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 172 insertions(+), 1 deletions(-)

diff --git a/service-api/src/main/java/com/java110/api/listener/visit/UpdateVisitListener.java b/service-api/src/main/java/com/java110/api/listener/visit/UpdateVisitListener.java
index 664aad5..2ffd055 100755
--- a/service-api/src/main/java/com/java110/api/listener/visit/UpdateVisitListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/visit/UpdateVisitListener.java
@@ -6,10 +6,31 @@
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
 import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.factory.CommunitySettingFactory;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarAttrInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
+import com.java110.po.car.OwnerCarPo;
+import com.java110.po.ownerCarAttr.OwnerCarAttrPo;
+import com.java110.po.parking.ParkingSpacePo;
 import com.java110.utils.constant.ServiceCodeVisitConstant;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
 
 /**
  * 淇濆瓨璁垮鐧昏渚﹀惉
@@ -20,6 +41,24 @@
 
     @Autowired
     private IVisitBMO visitBMOImpl;
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarAttrInnerServiceSMO ownerCarAttrInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    //閿�
+    public static final String CAR_FREE_TIME = "CAR_FREE_TIME";
+
+    //閿�
+    public static final String ASCRIPTION_CAR_AREA_ID = "ASCRIPTION_CAR_AREA_ID";
 
     @Override
     protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
@@ -33,9 +72,141 @@
     }
 
     @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) throws ParseException {
+        //鏄惁鏈夌┖闂茶溅浣�
+        boolean freeSpace = false;
+        //鏄惁瀛樺湪杞﹁締
+        boolean existCar = false;
+        //鏍¢獙杞︾墝鍙锋槸鍚﹀瓨鍦�
+        OwnerCarDto ownerCarDto1 = new OwnerCarDto();
+        ownerCarDto1.setCommunityId(reqJson.getString("communityId"));
+        ownerCarDto1.setCarNum(reqJson.getString("carNum"));
+        int count = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto1);
+        if (count > 0) {
+            existCar = true;
+            reqJson.put("psId", "-1");
+        }
+        //flag瀹℃牳鎿嶄綔 骞朵笖 瀹℃牳閫氳繃 state=1 骞朵笖涓氫富杞﹁締涓嶅瓨鍦ㄧ殑鎯呭喌鍏坋xistCar=false
+        if (reqJson.containsKey("flag") && !StringUtil.isEmpty(reqJson.getString("flag")) && reqJson.getString("flag").equals("1")
+                && reqJson.containsKey("state") && !StringUtil.isEmpty(reqJson.getString("state")) && reqJson.getString("state").equals("1")
+                && !existCar) {
+            //鑾峰彇棰勭害杞﹀厤璐规椂闀跨殑鍊�
+            String freeTime = CommunitySettingFactory.getValue(reqJson.getString("communityId"), CAR_FREE_TIME);
+            String visitTime = reqJson.getString("visitTime");
+            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date time = df.parse(visitTime);
+            Calendar newTime = Calendar.getInstance();
+            newTime.setTime(time);
+            newTime.add(Calendar.MINUTE, Integer.parseInt(freeTime));//鏃ユ湡鍔犱笂鍒嗛挓
+            Date newDate = newTime.getTime();
+            String finishFreeTime = df.format(newDate);
+            reqJson.put("freeTime", finishFreeTime);
 
+            //鑾峰彇灏忓尯閰嶇疆閲岄厤缃殑鍋滆溅鍦篿d
+            String parkingAreaId = CommunitySettingFactory.getValue(reqJson.getString("communityId"), ASCRIPTION_CAR_AREA_ID);
+            if (StringUtil.isEmpty(parkingAreaId)) { //濡傛灉娌℃湁閰嶇疆鍋滆溅鍦篿d锛屽氨闅忎究鍒嗛厤璇ュ皬鍖轰笅涓�涓┖闂茶溅浣�
+                ParkingSpaceDto parkingSpace = new ParkingSpaceDto();
+                parkingSpace.setCommunityId(reqJson.getString("communityId"));
+                parkingSpace.setState("F"); //杞︿綅鐘舵�� 鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F
+                parkingSpace.setParkingType("1"); //1锛氭櫘閫氳溅浣�  2锛氬瓙姣嶈溅浣�  3锛氳豹鍗庤溅浣�
+                List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpace);
+                if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) {
+                    freeSpace = true;
+                } else {
+                    //闅忔満鐢熸垚涓�涓笉澶т簬闆嗗悎闀垮害鐨勬暣鏁�
+                    Random random = new Random();
+                    int i = random.nextInt(parkingSpaceDtos.size());
+                    //鑾峰彇杞︿綅id
+                    String psId = parkingSpaceDtos.get(i).getPsId();
+                    reqJson.put("psId", psId);
+                }
+            } else {
+                ParkingSpaceDto parkingSpace = new ParkingSpaceDto();
+                parkingSpace.setCommunityId(reqJson.getString("communityId"));
+                parkingSpace.setPaId(parkingAreaId); //鍋滆溅鍦篿d
+                parkingSpace.setState("F"); //杞︿綅鐘舵�� 鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F
+                parkingSpace.setParkingType("1"); //1锛氭櫘閫氳溅浣�  2锛氬瓙姣嶈溅浣�  3锛氳豹鍗庤溅浣�
+                List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpace);
+                if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) {
+                    freeSpace = true;
+                } else {
+                    //闅忔満鐢熸垚涓�涓笉澶т簬闆嗗悎闀垮害鐨勬暣鏁�
+                    Random random = new Random();
+                    int i = random.nextInt(parkingSpaceDtos.size());
+                    //鑾峰彇杞︿綅id
+                    String psId = parkingSpaceDtos.get(i).getPsId();
+                    reqJson.put("psId", psId);
+                }
+            }
+        }
+        String result = "";
+        if (reqJson.containsKey("state") && !StringUtil.isEmpty(reqJson.getString("state")) && reqJson.getString("state").equals("1")) {
+            result = "瀹℃牳閫氳繃锛�";
+        } else if (reqJson.containsKey("state") && !StringUtil.isEmpty(reqJson.getString("state")) && reqJson.getString("state").equals("2")) {
+            result = "瀹℃牳涓嶉�氳繃锛�";
+        }
+        if (existCar) {
+            result = "璁垮淇℃伅瀹℃牳鎴愬姛,杞﹁締宸茬粡瀛樺湪棰勭害锛岃鎮ㄥ湪棰勭害鍒版湡鍚庯紝鍐嶆杩涜杞﹁締棰勭害锛岃阿璋紒";
+        }
+        if (freeSpace) {
+            result = "璁垮淇℃伅瀹℃牳鎴愬姛锛屽綋鍓嶅仠杞﹀満宸叉棤绌洪棽杞︿綅锛岀櫥璁拌溅杈嗗皢鏆傛椂涓嶈兘杩涘叆鍋滆溅鍦猴紝璇锋偍鍚堢悊瀹夋帓鍑鸿銆�";
+        }
+        reqJson.put("stateRemark", result);
         visitBMOImpl.updateVisit(reqJson, context);
+        commit(context);
+        if (existCar) {
+            ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_BUSINESS_VERIFICATION, "璁垮淇℃伅瀹℃牳鎴愬姛,杞﹁締宸茬粡瀛樺湪棰勭害锛岃鎮ㄥ湪棰勭害鍒版湡鍚庯紝鍐嶆杩涜杞﹁締棰勭害锛岃阿璋紒");
+            context.setResponseEntity(responseEntity);
+            return;
+        }
+        if (freeSpace) {
+            ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_BUSINESS_VERIFICATION, "璁垮淇℃伅瀹℃牳鎴愬姛锛屽綋鍓嶅仠杞﹀満宸叉棤绌洪棽杞︿綅锛岀櫥璁拌溅杈嗗皢鏆傛椂涓嶈兘杩涘叆鍋滆溅鍦猴紝璇锋偍鍚堢悊瀹夋帓鍑鸿銆�");
+            context.setResponseEntity(responseEntity);
+            return;
+        }
+        //瀹℃牳閫氳繃涓旀湁杞︿綅灏辨洿鏂拌溅浣嶇姸鎬�
+        if (reqJson.containsKey("state") && !StringUtil.isEmpty(reqJson.getString("state")) && reqJson.getString("state").equals("1")
+                && reqJson.containsKey("flag") && !StringUtil.isEmpty(reqJson.getString("flag")) && reqJson.getString("flag").equals("1")
+                && !existCar) {
+            ParkingSpaceDto parkingSpace = new ParkingSpaceDto();
+            parkingSpace.setPsId(reqJson.getString("psId"));
+            //鏌ヨ鍋滆溅浣�
+            List<ParkingSpaceDto> parkingSpaces = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpace);
+            Assert.listOnlyOne(parkingSpaces, "鏌ヨ鍋滆溅浣嶉敊璇紒");
+            //娣诲姞杞﹁締淇℃伅
+            OwnerCarPo ownerCarPo = new OwnerCarPo();
+            ownerCarPo.setCarId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId));
+            ownerCarPo.setOwnerId(reqJson.getString("ownerId"));
+            ownerCarPo.setbId("-1");
+            ownerCarPo.setCarNum(reqJson.getString("carNum"));
+            ownerCarPo.setCarBrand("鏃狅紙棰勭害杞︼級");
+            ownerCarPo.setCarType("9901");
+            ownerCarPo.setCarColor("鏃狅紙棰勭害杞︼級");
+            ownerCarPo.setPsId(reqJson.getString("psId"));
+            ownerCarPo.setUserId(context.getUserId());
+            ownerCarPo.setRemark("璁垮鐧昏棰勭害杞�");
+            ownerCarPo.setCommunityId(reqJson.getString("communityId"));
+            ownerCarPo.setStartTime(reqJson.getString("visitTime"));
+            ownerCarPo.setEndTime(reqJson.getString("freeTime"));
+            ownerCarPo.setState(OwnerCarDto.STATE_NORMAL); //1001 姝e父鐘舵�侊紝2002 杞︿綅閲婃斁娆犺垂鐘舵��  3003 杞︿綅閲婃斁
+            ownerCarPo.setCarTypeCd(OwnerCarDto.CAR_TYPE_TEMP); //1001 涓氫富杞﹁締 1002 鎴愬憳杞﹁締 1003 涓存椂杞�
+            ownerCarPo.setMemberId(reqJson.getString("ownerId"));
+            ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo);
+            //娣诲姞杞﹁締灞炴��
+            OwnerCarAttrPo ownerCarAttrPo = new OwnerCarAttrPo();
+            ownerCarAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_cartId));
+            ownerCarAttrPo.setCarId(ownerCarPo.getCarId());
+            ownerCarAttrPo.setCommunityId(ownerCarPo.getCommunityId());
+            ownerCarAttrPo.setSpecCd("6443000036"); //6443000036涓氫富杞﹁締
+            ownerCarAttrPo.setValue("true"); //棰勭害杞�
+            ownerCarAttrPo.setbId("-1");
+            ownerCarAttrInnerServiceSMOImpl.saveOwnerCarAttr(ownerCarAttrPo);
+            //鏇存柊杞︿綅鐘舵��
+            ParkingSpacePo parkingSpacePo = new ParkingSpacePo();
+            parkingSpacePo.setPsId(reqJson.getString("psId"));
+            parkingSpacePo.setState("H"); //杞︿綅鐘舵�� 鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F
+            parkingSpaceInnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
+        }
     }
 
     @Override

--
Gitblit v1.8.0