From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能
---
service-store/src/main/java/com/java110/store/bmo/contractChangePlan/impl/SaveContractChangePlanBMOImpl.java | 304 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 299 insertions(+), 5 deletions(-)
diff --git a/service-store/src/main/java/com/java110/store/bmo/contractChangePlan/impl/SaveContractChangePlanBMOImpl.java b/service-store/src/main/java/com/java110/store/bmo/contractChangePlan/impl/SaveContractChangePlanBMOImpl.java
index 8fcb393..44b696a 100644
--- a/service-store/src/main/java/com/java110/store/bmo/contractChangePlan/impl/SaveContractChangePlanBMOImpl.java
+++ b/service-store/src/main/java/com/java110/store/bmo/contractChangePlan/impl/SaveContractChangePlanBMOImpl.java
@@ -1,14 +1,29 @@
package com.java110.store.bmo.contractChangePlan.impl;
+import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.RoomDto;
import com.java110.dto.contract.ContractDto;
-import com.java110.intf.store.IContractChangePlanDetailInnerServiceSMO;
-import com.java110.intf.store.IContractChangePlanInnerServiceSMO;
-import com.java110.intf.store.IContractInnerServiceSMO;
+import com.java110.dto.contractChangePlan.ContractChangePlanDto;
+import com.java110.dto.contractChangePlanDetail.ContractChangePlanDetailDto;
+import com.java110.dto.contractChangePlanRoom.ContractChangePlanRoomDto;
+import com.java110.dto.contractRoom.ContractRoomDto;
+import com.java110.dto.contractType.ContractTypeDto;
+import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.intf.common.IContractChangeUserInnerServiceSMO;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.store.*;
+import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
+import com.java110.po.contract.ContractPo;
import com.java110.po.contractChangePlan.ContractChangePlanPo;
import com.java110.po.contractChangePlanDetail.ContractChangePlanDetailPo;
+import com.java110.po.contractChangePlanRoom.ContractChangePlanRoomPo;
+import com.java110.po.contractRoom.ContractRoomPo;
+import com.java110.po.owner.OwnerRoomRelPo;
+import com.java110.po.room.RoomPo;
import com.java110.store.bmo.contractChangePlan.ISaveContractChangePlanBMO;
+import com.java110.utils.constant.StatusConstant;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.vo.ResultVo;
@@ -30,6 +45,24 @@
@Autowired
private IContractInnerServiceSMO contractInnerServiceSMOImpl;
+ @Autowired
+ private IContractChangeUserInnerServiceSMO contractChangeUserInnerServiceSMO;
+
+ @Autowired
+ private IContractChangePlanRoomInnerServiceSMO contractChangePlanRoomInnerServiceSMOImpl;
+
+ @Autowired
+ private IContractRoomInnerServiceSMO contractRoomInnerServiceSMOImpl;
+
+ @Autowired
+ private IContractTypeInnerServiceSMO contractTypeInnerServiceSMOImpl;
+
+ @Autowired
+ private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
+
+ @Autowired
+ private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
/**
* 娣诲姞灏忓尯淇℃伅
*
@@ -37,7 +70,10 @@
* @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
*/
@Java110Transactional
- public ResponseEntity<String> save(ContractChangePlanPo contractChangePlanPo, ContractChangePlanDetailPo contractChangePlanDetailPo) {
+ public ResponseEntity<String> save(ContractChangePlanPo contractChangePlanPo,
+ ContractChangePlanDetailPo contractChangePlanDetailPo,
+ List<ContractChangePlanRoomPo> contractChangePlanRoomPos,
+ JSONObject reqJson) {
//鏌ヨ鑰佺殑鍚堝悓淇℃伅
ContractDto contractDto = new ContractDto();
@@ -46,6 +82,14 @@
List<ContractDto> contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto);
Assert.listOnlyOne(contractDtos, "鍚堝悓涓嶅瓨鍦�");
+
+ //鏌ヨ 鍚堝悓鏄惁闇�瑕佸鏍�
+ ContractTypeDto contractTypeDto = new ContractTypeDto();
+ contractTypeDto.setContractTypeId(contractDtos.get(0).getContractType());
+ contractTypeDto.setStoreId(contractDtos.get(0).getStoreId());
+ List<ContractTypeDto> contractTypeDtos = contractTypeInnerServiceSMOImpl.queryContractTypes(contractTypeDto);
+
+ Assert.listOnlyOne(contractTypeDtos, "鍚堝悓绫诲瀷涓嶅瓨鍦�");
contractChangePlanPo.setPlanId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_planId));
int flag = contractChangePlanInnerServiceSMOImpl.saveContractChangePlan(contractChangePlanPo);
@@ -66,12 +110,262 @@
oldContractChangePlanDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
oldContractChangePlanDetailPo.setPlanId(contractChangePlanPo.getPlanId());
oldContractChangePlanDetailPo.setOperate("DEL");
- flag = contractChangePlanDetailInnerServiceSMOImpl.saveContractChangePlanDetail(contractChangePlanDetailPo);
+ flag = contractChangePlanDetailInnerServiceSMOImpl.saveContractChangePlanDetail(oldContractChangePlanDetailPo);
if (flag < 1) {
throw new IllegalArgumentException("淇濆瓨鍙樻洿璁板綍澶辫触");
}
+ dealContractChangePlanRooms(contractChangePlanPo, contractChangePlanRoomPos);
+
+ //闇�瑕佸鏍告椂鎵嶅啓 宸ヤ綔娴�
+ if (!ContractTypeDto.NO_AUDIT.equals(contractTypeDtos.get(0).getAudit())) {
+ //鎻愪氦娴佺▼
+ ContractChangePlanDto contractChangePlanDto = BeanConvertUtil.covertBean(contractChangePlanPo, ContractChangePlanDto.class);
+ contractChangePlanDto.setCurrentUserId(contractChangePlanPo.getChangePerson());
+ contractChangePlanDto.setNextUserId(reqJson.getString("nextUserId"));
+ contractChangeUserInnerServiceSMO.startProcess(contractChangePlanDto);
+ } else {
+ ContractChangePlanPo tmpContractChangePlanPo = new ContractChangePlanPo();
+ tmpContractChangePlanPo.setPlanId(contractChangePlanPo.getPlanId());
+ tmpContractChangePlanPo.setState(ContractDto.STATE_AUDIT_FINISH);
+ tmpContractChangePlanPo.setStatusCd(StatusConstant.STATUS_CD_VALID);
+ contractChangePlanInnerServiceSMOImpl.updateContractChangePlan(tmpContractChangePlanPo);
+ //淇敼鍚堝悓淇℃伅
+ ContractChangePlanDetailDto contractChangePlanDetailDto = new ContractChangePlanDetailDto();
+ contractChangePlanDetailDto.setPlanId(contractChangePlanPo.getPlanId());
+ contractChangePlanDetailDto.setStoreId(contractChangePlanPo.getStoreId());
+ contractChangePlanDetailDto.setOperate("ADD");
+ List<ContractChangePlanDetailDto> contractChangePlanDetailDtos =
+ contractChangePlanDetailInnerServiceSMOImpl.queryContractChangePlanDetails(contractChangePlanDetailDto);
+
+ Assert.listOnlyOne(contractChangePlanDetailDtos, "鏁版嵁閿欒");
+ ContractPo contractPo = BeanConvertUtil.covertBean(contractChangePlanDetailDtos.get(0), ContractPo.class);
+
+ contractInnerServiceSMOImpl.updateContract(contractPo);
+ dealContractChangePlanRoom(tmpContractChangePlanPo, contractDtos.get(0));
+ }
+
+
return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
}
+ private void dealContractChangePlanRoom(ContractChangePlanPo contractChangePlanPo, ContractDto contractDto) {
+
+ //鏌ヨ鍚堝悓鎴垮眿
+ ContractRoomDto contractRoomDto = new ContractRoomDto();
+ contractRoomDto.setStoreId(contractChangePlanPo.getStoreId());
+ contractRoomDto.setContractId(contractDto.getContractId());
+ List<ContractRoomDto> oldContractRoomDtos = contractRoomInnerServiceSMOImpl.queryContractRooms(contractRoomDto);
+ // 鏌ヨ 鏄惁鏈夎祫浜у彉鏇�
+
+ ContractChangePlanRoomDto contractChangePlanRoomDto = new ContractChangePlanRoomDto();
+ contractChangePlanRoomDto.setPlanId(contractChangePlanPo.getPlanId());
+ contractChangePlanRoomDto.setStoreId(contractChangePlanPo.getStoreId());
+ contractChangePlanRoomDto.setOperate("ADD");
+
+ List<ContractChangePlanRoomDto> contractChangePlanRoomDtos
+ = contractChangePlanRoomInnerServiceSMOImpl.queryContractChangePlanRooms(contractChangePlanRoomDto);
+
+ if (contractChangePlanRoomDtos == null || contractChangePlanRoomDtos.size() < 1) {
+ //鍒犻櫎鑰佺殑鍏崇郴鍊�
+ doDelOldRoomRel(contractChangePlanRoomDtos, oldContractRoomDtos);
+ return;
+ }
+ doAddRoomRel(contractDto, oldContractRoomDtos, contractChangePlanRoomDtos);
+
+ //鍒犻櫎鑰佺殑鍏崇郴鍊�
+ doDelOldRoomRel(contractChangePlanRoomDtos, oldContractRoomDtos);
+
+
+ }
+
+ private void doAddRoomRel(ContractDto contractDto, List<ContractRoomDto> oldContractRoomDtos, List<ContractChangePlanRoomDto> contractChangePlanRoomDtos) {
+ //鍒犻櫎涔嬪墠鏁版嵁 鎻掑叆鏂版暟鎹�
+ ContractRoomPo contractRoomPo = null;
+ //鎻掑叆鏂扮殑鍏崇郴鍊�
+ for (ContractChangePlanRoomDto tmpContractChangePlanRoomDto : contractChangePlanRoomDtos) {
+ if (isOldRoom(tmpContractChangePlanRoomDto, oldContractRoomDtos)) {
+ continue;
+ }
+ contractRoomPo = new ContractRoomPo();
+ contractRoomPo.setContractId(contractChangePlanRoomDtos.get(0).getContractId());
+ contractRoomPo.setStoreId(contractChangePlanRoomDtos.get(0).getStoreId());
+ contractRoomPo.setCrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_crId));
+ contractRoomPo.setOwnerId(tmpContractChangePlanRoomDto.getOwnerId());
+ contractRoomPo.setOwnerName(tmpContractChangePlanRoomDto.getOwnerName());
+ contractRoomPo.setRoomId(tmpContractChangePlanRoomDto.getRoomId());
+ contractRoomPo.setRoomName(tmpContractChangePlanRoomDto.getRoomName());
+ contractRoomInnerServiceSMOImpl.saveContractRoom(contractRoomPo);
+
+ //鍒蜂笟涓�
+ OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+ ownerRoomRelDto.setRoomId(contractRoomPo.getRoomId());
+ List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+
+ if (ownerRoomRelDtos != null && ownerRoomRelDtos.size() > 0) { // 璇存槑涓氫富娌℃湁鍙戠敓鍙樺寲锛屽悗缁伐浣滀笉鍋氬鐞�
+ if (contractDto.getObjId().equals(ownerRoomRelDtos.get(0).getOwnerId())) {
+ continue;
+ }
+ }
+
+ //缁戝畾鍏崇郴
+ String relId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_relId);
+ OwnerRoomRelPo ownerRoomRelPo = new OwnerRoomRelPo();
+ ownerRoomRelPo.setEndTime(contractDto.getEndTime());
+ ownerRoomRelPo.setStartTime(contractDto.getStartTime());
+ ownerRoomRelPo.setOwnerId(contractDto.getObjId());
+ ownerRoomRelPo.setRelId(relId);
+ ownerRoomRelPo.setRemark("绛捐鍚堝悓鑷姩缁戝畾");
+ ownerRoomRelPo.setRoomId(contractRoomPo.getRoomId());
+ ownerRoomRelPo.setState("2001");
+ ownerRoomRelPo.setUserId("-1");
+ ownerRoomRelPo.setOperate("ADD");
+ ownerRoomRelPo.setbId("-1");
+ ownerRoomRelInnerServiceSMOImpl.saveBusinessOwnerRoomRels(ownerRoomRelPo);
+
+ ownerRoomRelPo = new OwnerRoomRelPo();
+ ownerRoomRelPo.setEndTime(contractDto.getEndTime());
+ ownerRoomRelPo.setStartTime(contractDto.getStartTime());
+ ownerRoomRelPo.setOwnerId(contractDto.getObjId());
+ ownerRoomRelPo.setRelId(relId);
+ ownerRoomRelPo.setRemark("绛捐鍚堝悓鑷姩缁戝畾");
+ ownerRoomRelPo.setRoomId(contractRoomPo.getRoomId());
+ ownerRoomRelPo.setState("2001");
+ ownerRoomRelPo.setUserId("-1");
+ ownerRoomRelInnerServiceSMOImpl.saveOwnerRoomRels(ownerRoomRelPo);
+
+ //淇敼鎴垮眿鐘舵��
+ RoomPo roomPo = new RoomPo();
+ roomPo.setRoomId(contractRoomPo.getRoomId());
+ roomPo.setState(RoomDto.STATE_SELL);
+ roomPo.setStatusCd(StatusConstant.STATUS_CD_VALID);
+ roomInnerServiceSMOImpl.updateRooms(roomPo);
+ //鍒犻櫎鑰佺殑
+ if (ownerRoomRelDtos != null && ownerRoomRelDtos.size() > 0) {
+ ownerRoomRelPo = new OwnerRoomRelPo();
+ ownerRoomRelPo.setStatusCd(StatusConstant.STATUS_CD_INVALID);
+ ownerRoomRelPo.setRelId(ownerRoomRelDtos.get(0).getRelId());
+ ownerRoomRelInnerServiceSMOImpl.updateOwnerRoomRels(ownerRoomRelPo);
+ ownerRoomRelPo = BeanConvertUtil.covertBean(ownerRoomRelDtos.get(0), OwnerRoomRelPo.class);
+ ownerRoomRelPo.setbId("-1");
+ ownerRoomRelPo.setOperate("DEL");
+ ownerRoomRelInnerServiceSMOImpl.saveBusinessOwnerRoomRels(ownerRoomRelPo);
+ }
+ }
+ }
+
+ private void doDelOldRoomRel(List<ContractChangePlanRoomDto> contractChangePlanRoomDtos, List<ContractRoomDto> oldContractRoomDtos) {
+ ContractRoomPo contractRoomPo;
+ OwnerRoomRelPo ownerRoomRelPo = null;
+ for (ContractRoomDto oldContractRoomDto : oldContractRoomDtos) {
+ if (isDelOldRoom(oldContractRoomDto, contractChangePlanRoomDtos)) {
+ continue;
+ }
+ contractRoomPo = new ContractRoomPo();
+ contractRoomPo.setContractId(oldContractRoomDtos.get(0).getContractId());
+ contractRoomPo.setStoreId(oldContractRoomDtos.get(0).getStoreId());
+ contractRoomPo.setCrId(oldContractRoomDto.getCrId());
+ contractRoomInnerServiceSMOImpl.deleteContractRoom(contractRoomPo);
+
+ //鍒蜂笟涓�
+ OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+ ownerRoomRelDto.setRoomId(oldContractRoomDto.getRoomId());
+ List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+
+ if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) { // 璇存槑鎴垮眿娌℃湁涓氫富
+ continue;
+ }
+ //鍒犻櫎鍏崇郴
+ ownerRoomRelPo = new OwnerRoomRelPo();
+ ownerRoomRelPo.setStatusCd(StatusConstant.STATUS_CD_INVALID);
+ ownerRoomRelPo.setRelId(ownerRoomRelDtos.get(0).getRelId());
+ ownerRoomRelInnerServiceSMOImpl.updateOwnerRoomRels(ownerRoomRelPo);
+
+ //鎻掑叆鍒犻櫎鍏崇郴
+ ownerRoomRelPo = BeanConvertUtil.covertBean(ownerRoomRelDtos.get(0), OwnerRoomRelPo.class);
+ ownerRoomRelPo.setbId("-1");
+ ownerRoomRelPo.setOperate("DEL");
+ ownerRoomRelInnerServiceSMOImpl.saveBusinessOwnerRoomRels(ownerRoomRelPo);
+
+
+ //淇敼鎴垮眿鐘舵��
+ RoomPo roomPo = new RoomPo();
+ roomPo.setRoomId(oldContractRoomDto.getRoomId());
+ roomPo.setState(RoomDto.STATE_FREE);
+ roomPo.setStatusCd(StatusConstant.STATUS_CD_VALID);
+ roomInnerServiceSMOImpl.updateRooms(roomPo);
+ }
+ }
+
+ private boolean isDelOldRoom(ContractRoomDto oldContractRoomDto, List<ContractChangePlanRoomDto> contractChangePlanRoomDtos) {
+ if (contractChangePlanRoomDtos == null || contractChangePlanRoomDtos.size() > 0) {
+ return false;
+ }
+
+ for (ContractChangePlanRoomDto contractChangePlanRoomDto : contractChangePlanRoomDtos) {
+ if (contractChangePlanRoomDto.getRoomId().equals(oldContractRoomDto.getRoomId())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private boolean isOldRoom(ContractChangePlanRoomDto tmpContractChangePlanRoomDto, List<ContractRoomDto> oldContractRoomDtos) {
+ if (oldContractRoomDtos == null || oldContractRoomDtos.size() > 0) {
+ return false;
+ }
+
+ for (ContractRoomDto contractRoomDto : oldContractRoomDtos) {
+ if (tmpContractChangePlanRoomDto.getRoomId().equals(contractRoomDto.getRoomId())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * 澶勭悊鍚堝悓鍙樻洿璧勪骇鍔熻兘
+ *
+ * @param contractChangePlanRoomPos
+ */
+ private void dealContractChangePlanRooms(ContractChangePlanPo contractChangePlanPo,
+ List<ContractChangePlanRoomPo> contractChangePlanRoomPos) {
+
+ if (contractChangePlanRoomPos == null || contractChangePlanRoomPos.size() == 0) {
+ return;
+ }
+ ContractChangePlanRoomPo tmpContractChangePlanRoomPo = null;
+ for (ContractChangePlanRoomPo contractChangePlanRoomPo : contractChangePlanRoomPos) {
+
+ ContractRoomDto contractRoomDto = new ContractRoomDto();
+ contractRoomDto.setContractId(contractChangePlanPo.getContractId());
+ contractRoomDto.setRoomId(contractChangePlanRoomPo.getRoomId());
+ List<ContractRoomDto> contractRoomDtos
+ = contractRoomInnerServiceSMOImpl.queryContractRooms(contractRoomDto);
+
+ if (contractRoomDtos != null && contractRoomDtos.size() > 0) {
+ tmpContractChangePlanRoomPo = new ContractChangePlanRoomPo();
+ tmpContractChangePlanRoomPo.setContractId(contractChangePlanPo.getContractId());
+ tmpContractChangePlanRoomPo.setOwnerId(contractRoomDtos.get(0).getOwnerId());
+ tmpContractChangePlanRoomPo.setOwnerName(contractRoomDtos.get(0).getOwnerName());
+ tmpContractChangePlanRoomPo.setPlanId(contractChangePlanPo.getPlanId());
+ tmpContractChangePlanRoomPo.setPrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_prId));
+ tmpContractChangePlanRoomPo.setRoomId(contractRoomDtos.get(0).getRoomId());
+ tmpContractChangePlanRoomPo.setRoomName(contractRoomDtos.get(0).getRoomName());
+ tmpContractChangePlanRoomPo.setStoreId(contractRoomDtos.get(0).getStoreId());
+ tmpContractChangePlanRoomPo.setOperate("DEL");
+ contractChangePlanRoomInnerServiceSMOImpl.saveContractChangePlanRoom(tmpContractChangePlanRoomPo);
+ }
+
+ contractChangePlanRoomPo.setContractId(contractChangePlanPo.getContractId());
+ contractChangePlanRoomPo.setPlanId(contractChangePlanPo.getPlanId());
+ contractChangePlanRoomPo.setPrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_prId));
+ contractChangePlanRoomPo.setStoreId(contractChangePlanPo.getStoreId());
+ contractChangePlanRoomPo.setOperate("ADD");
+ contractChangePlanRoomInnerServiceSMOImpl.saveContractChangePlanRoom(contractChangePlanRoomPo);
+ }
+ }
+
}
--
Gitblit v1.8.0