From 0f78bfff0369d8599b2c14accbed2a9d8e375799 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期六, 26 九月 2020 23:43:52 +0800
Subject: [PATCH] 优化代码

---
 service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java |  106 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 103 insertions(+), 3 deletions(-)

diff --git a/service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java b/service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java
index b7a7e66..896fd7c 100644
--- a/service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java
+++ b/service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java
@@ -1,13 +1,28 @@
 package com.java110.store.bmo.contract.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Transactional;
+import com.java110.dto.contract.ContractDto;
+import com.java110.dto.contractAttr.ContractAttrDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.rentingPool.RentingPoolDto;
+import com.java110.dto.store.StoreDto;
+import com.java110.intf.store.IContractAttrInnerServiceSMO;
 import com.java110.intf.store.IContractInnerServiceSMO;
+import com.java110.intf.user.IRentingPoolInnerServiceSMO;
 import com.java110.po.contract.ContractPo;
+import com.java110.po.contractAttr.ContractAttrPo;
+import com.java110.po.rentingPool.RentingPoolPo;
 import com.java110.store.bmo.contract.IUpdateContractBMO;
+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.ResponseEntity;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service("updateContractBMOImpl")
 public class UpdateContractBMOImpl implements IUpdateContractBMO {
@@ -15,20 +30,105 @@
     @Autowired
     private IContractInnerServiceSMO contractInnerServiceSMOImpl;
 
+    @Autowired
+    private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl;
+
+    @Autowired
+    private IRentingPoolInnerServiceSMO rentingPoolInnerServiceSMOImpl;
+
     /**
      * @param contractPo
      * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
      */
     @Java110Transactional
-    public ResponseEntity<String> update(ContractPo contractPo) {
+    public ResponseEntity<String> update(ContractPo contractPo, JSONObject reqJson) {
 
         int flag = contractInnerServiceSMOImpl.updateContract(contractPo);
 
-        if (flag > 0) {
+        if (flag < 1) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
+
+        }
+
+        noticeRentUpdateState(contractPo);
+
+        if (!reqJson.containsKey("contractTypeSpecs")) {
             return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
         }
 
-        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
+
+        JSONArray contractTypeSpecs = reqJson.getJSONArray("contractTypeSpecs");
+
+        if (contractTypeSpecs.size() < 1) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
+        }
+
+        for (int typeSpecIndex = 0; typeSpecIndex < contractTypeSpecs.size(); typeSpecIndex++) {
+            updateContractAttr(contractTypeSpecs.getJSONObject(typeSpecIndex), contractPo);
+        }
+
+        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
+
+    }
+
+    private void updateContractAttr(JSONObject jsonObject, ContractPo contractPo) {
+        ContractAttrDto contractAttrDto = new ContractAttrDto();
+        contractAttrDto.setContractId(contractPo.getContractId());
+        contractAttrDto.setSpecCd(jsonObject.getString("specCd"));
+        List<ContractAttrDto> contractAttrDtos = contractAttrInnerServiceSMOImpl.queryContractAttrs(contractAttrDto);
+
+        Assert.listOnlyOne(contractAttrDtos, "鏈壘鍒伴渶瑕佷慨鏀圭殑鍚堝悓灞炴��");
+        ContractAttrPo contractAttrPo = new ContractAttrPo();
+        contractAttrPo.setAttrId(contractAttrDtos.get(0).getAttrId());
+        contractAttrPo.setContractId(contractPo.getContractId());
+        contractAttrPo.setSpecCd(jsonObject.getString("specCd"));
+        contractAttrPo.setValue(jsonObject.getString("value"));
+        contractAttrPo.setStoreId(contractPo.getStoreId());
+        int count = contractAttrInnerServiceSMOImpl.updateContractAttr(contractAttrPo);
+
+        if (count < 1) {
+            throw new IllegalArgumentException("淇濆瓨灞炴�уけ璐�");
+        }
+    }
+
+    /**
+     * 淇敼 鎴垮眿绉熻祦鐘舵��
+     *
+     * @param contractPo
+     */
+    private void noticeRentUpdateState(ContractPo contractPo) {
+
+        ContractDto contractDto = new ContractDto();
+        contractDto.setContractId(contractPo.getContractId());
+        List<ContractDto> contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto);
+
+        Assert.listOnlyOne(contractDtos, "鏈壘鍒伴渶瑕佸鏍稿悎鍚�");
+
+        if (!contractDtos.get(0).getObjType().equals(FeeDto.PAYER_OBJ_TYPE_ROOM)
+                || StringUtil.isEmpty(contractDtos.get(0).getObjId())
+                || contractDtos.get(0).getObjId().startsWith("-")) {
+            return;
+        }
+
+        if (!StoreDto.STORE_ADMIN.equals(contractDtos.get(0).getStoreId())) {
+            return;
+        }
+        RentingPoolDto rentingPoolDto = new RentingPoolDto();
+        rentingPoolDto.setRoomId(contractDtos.get(0).getObjId());
+        rentingPoolDto.setState(RentingPoolDto.STATE_ADMIN_AUDIT);
+        List<RentingPoolDto> rentingPoolDtos = rentingPoolInnerServiceSMOImpl.queryRentingPools(rentingPoolDto);
+
+        if (rentingPoolDtos == null || rentingPoolDtos.size() < 1) {
+            return;
+        }
+
+        RentingPoolPo rentingPoolPo = new RentingPoolPo();
+        rentingPoolPo.setCommunityId(rentingPoolDtos.get(0).getCommunityId());
+        rentingPoolPo.setRentingId(rentingPoolDtos.get(0).getRentingId());
+
+        rentingPoolPo.setState(RentingPoolDto.STATE_FINISH);
+
+        rentingPoolInnerServiceSMOImpl.updateRentingPool(rentingPoolPo);
     }
 
 }

--
Gitblit v1.8.0