From bb198fb66045329b6dc47a031f202aabc6b8a1dd Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期日, 31 五月 2020 21:33:01 +0800
Subject: [PATCH] 优化代码

---
 Api/src/main/java/com/java110/api/bmo/parkingSpace/impl/ParkingSpaceBMOImpl.java |  366 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 365 insertions(+), 1 deletions(-)

diff --git a/Api/src/main/java/com/java110/api/bmo/parkingSpace/impl/ParkingSpaceBMOImpl.java b/Api/src/main/java/com/java110/api/bmo/parkingSpace/impl/ParkingSpaceBMOImpl.java
index d3dcf72..f4d78f6 100644
--- a/Api/src/main/java/com/java110/api/bmo/parkingSpace/impl/ParkingSpaceBMOImpl.java
+++ b/Api/src/main/java/com/java110/api/bmo/parkingSpace/impl/ParkingSpaceBMOImpl.java
@@ -1,9 +1,33 @@
 package com.java110.api.bmo.parkingSpace.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.java110.api.bmo.ApiBaseBMO;
-import com.java110.api.bmo.parkingArea.IParkingAreaBMO;
 import com.java110.api.bmo.parkingSpace.IParkingSpaceBMO;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.fee.IFeeConfigInnerServiceSMO;
+import com.java110.core.smo.fee.IFeeInnerServiceSMO;
+import com.java110.core.smo.parkingSpace.IParkingSpaceInnerServiceSMO;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.po.car.OwnerCarPo;
+import com.java110.po.fee.PayFeeDetailPo;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.parking.ParkingSpacePo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.FeeTypeConstant;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.ListenerExecuteException;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @ClassName ParkingSpaceBMOImpl
@@ -15,4 +39,344 @@
  **/
 @Service("parkingSpaceBMOImpl")
 public class ParkingSpaceBMOImpl extends ApiBaseBMO implements IParkingSpaceBMO {
+
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+    @Autowired
+    private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
+
+    /**
+     * 娣诲姞灏忓尯妤间俊鎭�
+     *
+     * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void deleteParkingSpace(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        JSONObject businessParkingSpace = new JSONObject();
+        businessParkingSpace.put("psId", paramInJson.getString("psId"));
+        ParkingSpacePo parkingSpacePo = BeanConvertUtil.covertBean(businessParkingSpace, ParkingSpacePo.class);
+        super.delete(dataFlowContext, parkingSpacePo, BusinessTypeConstant.BUSINESS_TYPE_DELETE_PARKING_SPACE);
+    }
+
+    /**
+     * 娣诲姞灏忓尯妤间俊鎭�
+     *
+     * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void editParkingSpace(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setCommunityId(paramInJson.getString("communityId"));
+        parkingSpaceDto.setPsId(paramInJson.getString("psId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        if (parkingSpaceDtos == null || parkingSpaceDtos.size() != 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏈煡璇㈠埌鍋滆溅浣嶄俊鎭�" + JSONObject.toJSONString(parkingSpaceDto));
+        }
+
+        parkingSpaceDto = parkingSpaceDtos.get(0);
+        JSONObject businessParkingSpace = new JSONObject();
+
+        businessParkingSpace.putAll(paramInJson);
+        businessParkingSpace.put("state", parkingSpaceDto.getState());
+        ParkingSpacePo parkingSpacePo = BeanConvertUtil.covertBean(businessParkingSpace, ParkingSpacePo.class);
+        super.update(dataFlowContext, parkingSpacePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_PARKING_SPACE);
+    }
+
+    /**
+     * 鍞崠鎴垮眿淇℃伅
+     *
+     * @param paramInJson     鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @param dataFlowContext 鏁版嵁涓婁笅鏂�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void exitParkingSpace(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+
+        OwnerCarDto ownerCarDto = (OwnerCarDto) paramInJson.get("ownerCarDto");
+
+        JSONObject businessOwnerCar = new JSONObject();
+        //businessUnit.putAll(paramInJson);
+        businessOwnerCar.put("carId", ownerCarDto.getCarId());
+        //businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID));
+        OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(businessOwnerCar, OwnerCarPo.class);
+        super.delete(dataFlowContext, ownerCarPo, BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_CAR);
+    }
+
+    /**
+     * 淇敼鍋滆溅浣嶇姸鎬佷俊鎭�
+     *
+     * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void modifyParkingSpaceState(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setCommunityId(paramInJson.getString("communityId"));
+        parkingSpaceDto.setPsId(paramInJson.getString("psId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        if (parkingSpaceDtos == null || parkingSpaceDtos.size() != 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏈煡璇㈠埌鍋滆溅浣嶄俊鎭�" + JSONObject.toJSONString(parkingSpaceDto));
+        }
+
+        parkingSpaceDto = parkingSpaceDtos.get(0);
+
+        JSONObject businessParkingSpace = new JSONObject();
+
+        businessParkingSpace.putAll(BeanConvertUtil.beanCovertMap(parkingSpaceDto));
+        businessParkingSpace.put("state", "F");
+        ParkingSpacePo parkingSpacePo = BeanConvertUtil.covertBean(businessParkingSpace, ParkingSpacePo.class);
+        super.update(dataFlowContext, parkingSpacePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_PARKING_SPACE);
+    }
+
+    /**
+     * 鍒犻櫎鐗╀笟璐圭敤淇℃伅
+     *
+     * @param paramInJson     鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @param dataFlowContext 鏁版嵁涓婁笅鏂�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void exitParkingSpaceFee(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+
+        ParkingSpaceDto parkingSpaceDto = (ParkingSpaceDto) paramInJson.get("parkingSpaceDto");
+        //鏍¢獙鐗╀笟璐规槸鍚﹀凡缁忎氦娓�
+        FeeDto feeDto = new FeeDto();
+        feeDto.setCommunityId(paramInJson.getString("communityId"));
+        feeDto.setIncomeObjId(paramInJson.getString("storeId"));
+        feeDto.setPayerObjId(paramInJson.getString("psId"));
+        feeDto.setFeeTypeCd("1001".equals(parkingSpaceDto.getTypeCd())
+                ? ("H".equals(parkingSpaceDto.getState())
+                ? FeeTypeConstant.FEE_TYPE_HIRE_UP_PARKING_SPACE
+                : FeeTypeConstant.FEE_TYPE_SELL_UP_PARKING_SPACE)
+                : ("H".equals(parkingSpaceDto.getState())
+                ? FeeTypeConstant.FEE_TYPE_HIRE_DOWN_PARKING_SPACE
+                : FeeTypeConstant.FEE_TYPE_SELL_DOWN_PARKING_SPACE));
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+        if (feeDtos == null || feeDtos.size() != 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏁版嵁瀛樺湪闂锛屽仠杞﹁垂瀵瑰簲鍏崇郴涓嶆槸涓�鏉�");
+        }
+
+
+        JSONObject businessFee = new JSONObject();
+        //businessUnit.putAll(paramInJson);
+        businessFee.put("feeId", feeDtos.get(0).getFeeId());
+        //businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID));
+        PayFeePo payFeePo = BeanConvertUtil.covertBean(businessFee, PayFeePo.class);
+        super.delete(dataFlowContext, payFeePo, BusinessTypeConstant.BUSINESS_TYPE_DELETE_FEE_INFO);
+    }
+
+    /**
+     * 娣诲姞灏忓尯妤间俊鎭�
+     * <p>
+     * * name:'',
+     * *                 age:'',
+     * *                 link:'',
+     * *                 sex:'',
+     * *                 remark:''
+     *
+     * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void addParkingSpace(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        JSONObject businessParkingSpace = new JSONObject();
+        businessParkingSpace.putAll(paramInJson);
+        businessParkingSpace.put("state", "F");
+        businessParkingSpace.put("psId", "-1");
+        ParkingSpacePo parkingSpacePo = BeanConvertUtil.covertBean(businessParkingSpace, ParkingSpacePo.class);
+        super.delete(dataFlowContext, parkingSpacePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_PARKING_SPACE);
+    }
+
+
+    /**
+     * 娣诲姞灏忓尯妤间俊鎭�
+     * <p>
+     * * name:'',
+     * *                 age:'',
+     * *                 link:'',
+     * *                 sex:'',
+     * *                 remark:''
+     *
+     * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void sellParkingSpace(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        JSONObject businessOwnerCar = new JSONObject();
+        businessOwnerCar.putAll(paramInJson);
+        businessOwnerCar.put("carId", "-1");
+        OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(businessOwnerCar, OwnerCarPo.class);
+        super.delete(dataFlowContext, ownerCarPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_CAR);
+    }
+
+    /**
+     * 淇敼鍋滆溅浣嶇姸鎬佷俊鎭�
+     *
+     * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void modifySellParkingSpaceState(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setCommunityId(paramInJson.getString("communityId"));
+        parkingSpaceDto.setPsId(paramInJson.getString("psId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        if (parkingSpaceDtos == null || parkingSpaceDtos.size() != 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏈煡璇㈠埌鍋滆溅浣嶄俊鎭�" + JSONObject.toJSONString(parkingSpaceDto));
+        }
+
+        parkingSpaceDto = parkingSpaceDtos.get(0);
+
+        JSONObject businessParkingSpace = new JSONObject();
+
+        businessParkingSpace.putAll(BeanConvertUtil.beanCovertMap(parkingSpaceDto));
+        businessParkingSpace.put("state", this.isHireParkingSpace(paramInJson) ? "H" : "S");
+        ParkingSpacePo parkingSpacePo = BeanConvertUtil.covertBean(businessParkingSpace, ParkingSpacePo.class);
+        super.delete(dataFlowContext, parkingSpacePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_PARKING_SPACE);
+    }
+
+
+    /**
+     * 娣诲姞鐗╀笟璐圭敤
+     *
+     * @param paramInJson     鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @param dataFlowContext 鏁版嵁涓婁笅鏂�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void addParkingSpaceFee(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        JSONObject businessUnit = new JSONObject();
+        businessUnit.put("feeId", paramInJson.getString("feeId"));
+        businessUnit.put("feeTypeCd", paramInJson.getString("feeTypeCd"));
+        businessUnit.put("incomeObjId", paramInJson.getString("storeId"));
+        businessUnit.put("amount", paramInJson.getString("amount"));
+        businessUnit.put("startTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        businessUnit.put("endTime", paramInJson.getString("endTime"));
+        businessUnit.put("communityId", paramInJson.getString("communityId"));
+        businessUnit.put("payerObjId", paramInJson.getString("psId"));
+        businessUnit.put("payerObjType", "6666");
+        businessUnit.put("configId", paramInJson.getString("configId"));
+        businessUnit.put("feeFlag", this.isHireParkingSpace(paramInJson) ? "1003006" : "2006012");
+        businessUnit.put("state", this.isHireParkingSpace(paramInJson) ? "2008001" : "2009001");
+        businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID));
+        PayFeePo payFeePo = BeanConvertUtil.covertBean(businessUnit, PayFeePo.class);
+        super.insert(dataFlowContext, payFeePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_INFO);
+    }
+
+    /**
+     * 娣诲姞璐圭敤鏄庣粏淇℃伅
+     *
+     * @param paramInJson     鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @param dataFlowContext 鏁版嵁涓婁笅鏂�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    public void addFeeDetail(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        JSONObject businessFeeDetail = new JSONObject();
+        businessFeeDetail.putAll(paramInJson);
+        businessFeeDetail.put("detailId", "-1");
+        businessFeeDetail.put("primeRate", "1.00");
+        businessFeeDetail.put("cycles", paramInJson.getString("cycles"));
+        businessFeeDetail.put("receivableAmount", paramInJson.getString("receivableAmount"));
+        PayFeeDetailPo payFeeDetailPo = BeanConvertUtil.covertBean(businessFeeDetail, PayFeeDetailPo.class);
+        super.insert(dataFlowContext, payFeeDetailPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_DETAIL);
+    }
+
+    /**
+     * 鏍¢獙 鏄惁鏄溅浣嶅嚭绉�
+     *
+     * @param paramObj
+     * @return
+     */
+    private boolean isHireParkingSpace(JSONObject paramObj) {
+        if ("H".equals(paramObj.getString("sellOrHire"))) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 璁$畻璐圭敤淇℃伅
+     *
+     * @param paramInJson 浼犲叆鏁版嵁瀛楁
+     */
+    public void computeFeeInfo(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        //鏍规嵁鍋滆溅浣岻D鏌ヨ鏄湴涓婅繕鏄湴涓嬪仠杞︿綅
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setPsId(paramInJson.getString("psId"));
+        parkingSpaceDto.setCommunityId(paramInJson.getString("communityId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        if (parkingSpaceDtos == null || parkingSpaceDtos.size() != 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏈壘鍒版垨鎵惧埌澶氭潯杞︿綅淇℃伅");
+        }
+
+        parkingSpaceDto = parkingSpaceDtos.get(0);
+        paramInJson.put("parkingSpaceDto", parkingSpaceDto);
+
+        // 璁$畻feeTypeCd
+
+        String feeTypeCd = "1001".equals(parkingSpaceDto.getTypeCd())
+                ? (this.isHireParkingSpace(paramInJson)
+                ? FeeTypeConstant.FEE_TYPE_HIRE_UP_PARKING_SPACE
+                : FeeTypeConstant.FEE_TYPE_SELL_UP_PARKING_SPACE)
+                : (this.isHireParkingSpace(paramInJson)
+                ? FeeTypeConstant.FEE_TYPE_HIRE_DOWN_PARKING_SPACE
+                : FeeTypeConstant.FEE_TYPE_SELL_DOWN_PARKING_SPACE);
+
+        paramInJson.put("feeTypeCd", feeTypeCd);
+
+        //璁$畻 receivableAmount
+
+
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setFeeTypeCd(feeTypeCd);
+        feeConfigDto.setIsDefault("T");
+        feeConfigDto.setCommunityId(paramInJson.getString("communityId"));
+        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+        if (feeConfigDtos == null || feeConfigDtos.size() != 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏈煡鍒拌垂鐢ㄩ厤缃俊鎭紝鏌ヨ澶氭潯鏁版嵁");
+        }
+
+        feeConfigDto = feeConfigDtos.get(0);
+
+        double receivableAmount = isHireParkingSpace(paramInJson) ? Double.parseDouble(feeConfigDto.getAdditionalAmount())
+                * Double.parseDouble(paramInJson.getString("cycles")) : Double.parseDouble(feeConfigDto.getAdditionalAmount());
+
+        paramInJson.put("receivableAmount", receivableAmount);
+        paramInJson.put("configId", feeConfigDto.getConfigId());
+
+        //璁$畻 amount
+        String amount = isHireParkingSpace(paramInJson) ? "-1.00" : String.valueOf(receivableAmount);
+        paramInJson.put("amount", amount);
+
+        //璁$畻 cycles
+        String cycles = isHireParkingSpace(paramInJson) ? paramInJson.getString("cycles") : "1";
+        paramInJson.put("cycles", cycles);
+
+        //璁$畻缁撴潫鏃堕棿
+        String endTime = "2038-01-01 00:00:00";
+        if (isHireParkingSpace(paramInJson)) {
+            Date et = DateUtil.getCurrentDate();
+            Calendar endCalender = Calendar.getInstance();
+            endCalender.setTime(et);
+            endCalender.add(Calendar.MONTH, Integer.parseInt(paramInJson.getString("cycles")));
+            endTime = DateUtil.getFormatTimeString(endCalender.getTime(), DateUtil.DATE_FORMATE_STRING_A);
+        }
+
+        paramInJson.put("endTime", endTime);
+
+    }
+
+
 }

--
Gitblit v1.8.0