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/SaveVisitListener.java | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 169 insertions(+), 11 deletions(-)
diff --git a/service-api/src/main/java/com/java110/api/listener/visit/SaveVisitListener.java b/service-api/src/main/java/com/java110/api/listener/visit/SaveVisitListener.java
index 802e3f9..51933da 100755
--- a/service-api/src/main/java/com/java110/api/listener/visit/SaveVisitListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/visit/SaveVisitListener.java
@@ -8,12 +8,20 @@
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.dto.visit.VisitDto;
import com.java110.intf.common.IFileInnerServiceSMO;
import com.java110.dto.file.FileDto;
+import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
import com.java110.intf.community.IVisitInnerServiceSMO;
+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.file.FileRelPo;
-import com.java110.po.owner.VisitPo;
+import com.java110.po.ownerCarAttr.OwnerCarAttrPo;
+import com.java110.po.parking.ParkingSpacePo;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.ServiceCodeVisitConstant;
import com.java110.utils.util.Assert;
@@ -27,9 +35,10 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.Date;
import java.util.List;
-import java.util.TimeZone;
+import java.util.Random;
/**
* 淇濆瓨灏忓尯渚﹀惉
@@ -47,11 +56,29 @@
@Autowired
private IFileInnerServiceSMO fileInnerServiceSMOImpl;
+ @Autowired
+ private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+ @Autowired
+ private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IOwnerCarAttrInnerServiceSMO ownerCarAttrInnerServiceSMOImpl;
+
+ @Autowired
+ private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
//閿�
public static final String IS_NEED_REVIEW = "IS_NEED_REVIEW";
//閿�
public static final String VISIT_NUMBER = "VISIT_NUMBER";
+
+ //閿�
+ 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) {
@@ -68,8 +95,14 @@
protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) throws ParseException {
reqJson.put("vId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_vId));
//鏄惁闇�瑕佸鏍�
- String val = CommunitySettingFactory.getValue(reqJson.getString("communityId"), IS_NEED_REVIEW);
- if (!StringUtils.isEmpty(val) && val.equals("true") && reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))) {
+ String isNeedReviewFlag = CommunitySettingFactory.getValue(reqJson.getString("communityId"), IS_NEED_REVIEW);
+ //鏄惁鏈夌┖闂茶溅浣� false 鏈夌┖闂� true鏃犵┖闂�
+ boolean freeSpace = false;
+ //鏄惁瓒呰繃瑙勫畾娆℃暟
+ boolean specifiedTimes = false;
+ //鏄惁瀛樺湪杞﹁締
+ boolean existCar = false;
+ if (!StringUtils.isEmpty(isNeedReviewFlag) && isNeedReviewFlag.equals("true") && reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))) {
reqJson.put("state", "0"); //0琛ㄧず鏈鏍革紱1琛ㄧず瀹℃牳閫氳繃锛�2琛ㄧず瀹℃牳鎷掔粷
} else {
reqJson.put("state", "1");
@@ -78,9 +111,60 @@
if (reqJson.containsKey("entourage") && reqJson.getString("entourage").equals("")) {
reqJson.put("entourage", "0");
}
- //鏄惁瓒呰繃瑙勫畾娆℃暟
- boolean specifiedTimes = false;
+ reqJson.put("recordState", "0");
if (reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))) {
+ //鑾峰彇棰勭害杞﹀厤璐规椂闀跨殑鍊�
+ 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);
+ if (!StringUtils.isEmpty(isNeedReviewFlag) && isNeedReviewFlag.equals("false")) { //涓嶉渶瑕佸鏍稿氨闅忔満鑷姩鍒嗛厤杞︿綅
+ //鑾峰彇灏忓尯閰嶇疆閲岄厤缃殑鍋滆溅鍦篿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);
+ }
+ }
+ } else { //闇�瑕佸鏍稿氨鍦ㄥ鏍搁�氳繃鏃舵墠鍒嗛厤杞︿綅
+ reqJson.put("psId", "-1");
+ }
//鏌ヨ棰勭害杞﹁締鐧昏娆℃暟
int number = Integer.parseInt(CommunitySettingFactory.getValue(reqJson.getString("communityId"), VISIT_NUMBER));
VisitDto visitDto = new VisitDto();
@@ -91,13 +175,36 @@
List<VisitDto> visitDtos = visitInnerServiceSMOImpl.queryVisits(visitDto);
int count = visitDtos.size();
//棰勭害杞﹁締鐧昏娆℃暟0涓嶅仛闄愬埗
- if (count >= number && number>0) {
- if (!StringUtils.isEmpty(val) && val.equals("false")) {
+ if (count >= number && number > 0) {
+ if (!StringUtils.isEmpty(isNeedReviewFlag) && isNeedReviewFlag.equals("false")) {
reqJson.put("state", "0");
+ reqJson.put("psId", null);
+ reqJson.put("freeTime", null);
}
specifiedTimes = true;
}
+ //鏍¢獙杞︾墝鍙锋槸鍚﹀瓨鍦�
+ OwnerCarDto ownerCarDto1 = new OwnerCarDto();
+ ownerCarDto1.setCommunityId(reqJson.getString("communityId"));
+ ownerCarDto1.setCarNum(reqJson.getString("carNum"));
+ int existCarCount = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto1);
+ if (existCarCount > 0) {
+ existCar = true;
+ reqJson.put("psId", "-1");
+ }
}
+
+ String result = "";
+ if (existCar) {
+ result = "璁垮淇℃伅鐧昏鎴愬姛,杞﹁締宸茬粡瀛樺湪棰勭害锛岃鎮ㄥ湪棰勭害鍒版湡鍚庯紝鍐嶆杩涜杞﹁締棰勭害锛岃阿璋紒";
+ }
+ if (specifiedTimes) {
+ result = "璁垮淇℃伅鐧昏鎴愬姛,鎮ㄥ凡缁忚秴杩囬绾﹁溅杈嗙櫥璁版鏁伴檺鍒讹紝杞﹁締灏嗘棤娉曡嚜鍔ㄥ鏍革紒";
+ }
+ if (freeSpace) {
+ result = "璁垮淇℃伅鐧昏鎴愬姛,褰撳墠鍋滆溅鍦哄凡鏃犵┖闂茶溅浣嶏紝鐧昏杞﹁締灏嗘殏鏃朵笉鑳借繘鍏ュ仠杞﹀満锛岃鎮ㄥ悎鐞嗗畨鎺掑嚭琛屻��";
+ }
+ reqJson.put("stateRemark", result);
visitBMOImpl.addVisit(reqJson, context);
if (reqJson.containsKey("photo") && !StringUtils.isEmpty(reqJson.getString("photo"))) {
FileDto fileDto = new FileDto();
@@ -121,12 +228,63 @@
super.insert(context, fileRelPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FILE_REL);
}
commit(context);
- if (specifiedTimes) {
- ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_BUSINESS_VERIFICATION, "鐧昏鎴愬姛,鎮ㄥ凡缁忚秴杩囬绾﹁溅杈嗙櫥璁版鏁伴檺鍒讹紝杞﹁締灏嗘棤娉曡嚜鍔ㄥ鏍革紒");
+ if (!StringUtil.isEmpty(reqJson.getString("state")) && reqJson.getString("state").equals("1")
+ && reqJson.containsKey("carNum") && !StringUtil.isEmpty(reqJson.getString("carNum"))
+ && !existCar && !StringUtil.isEmpty(reqJson.getString("psId"))) { //瀹℃牳閫氳繃涓旀湁杞︿綅灏辨洿鏂拌溅浣嶇姸鎬�
+ ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+ parkingSpaceDto.setPsId(reqJson.getString("psId"));
+ //鏌ヨ鍋滆溅浣�
+ List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+ Assert.listOnlyOne(parkingSpaceDtos, "璁垮鐧昏,鏌ヨ鍋滆溅浣嶉敊璇紒");
+ //娣诲姞杞﹁締淇℃伅
+ 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);
+ }
+ if (existCar) {
+ ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, "璁垮淇℃伅鐧昏鎴愬姛,杞﹁締宸茬粡瀛樺湪棰勭害锛岃鎮ㄥ湪棰勭害鍒版湡鍚庯紝鍐嶆杩涜杞﹁締棰勭害锛岃阿璋紒");
context.setResponseEntity(responseEntity);
return;
}
-
+ if (specifiedTimes) {
+ ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, "璁垮淇℃伅鐧昏鎴愬姛,鎮ㄥ凡缁忚秴杩囬绾﹁溅杈嗙櫥璁版鏁伴檺鍒讹紝杞﹁締灏嗘棤娉曡嚜鍔ㄥ鏍革紒");
+ context.setResponseEntity(responseEntity);
+ return;
+ }
+ if (freeSpace) {
+ ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, "璁垮淇℃伅鐧昏鎴愬姛,褰撳墠鍋滆溅鍦哄凡鏃犵┖闂茶溅浣嶏紝鐧昏杞﹁締灏嗘殏鏃朵笉鑳借繘鍏ュ仠杞﹀満锛岃鎮ㄥ悎鐞嗗畨鎺掑嚭琛屻��");
+ context.setResponseEntity(responseEntity);
+ return;
+ }
}
@Override
--
Gitblit v1.8.0