| | |
| | | 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.room.RoomDto; |
| | | import com.java110.dto.contract.ContractDto; |
| | | import com.java110.dto.contractAttr.ContractAttrDto; |
| | | 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.contract.ContractAttrDto; |
| | | import com.java110.dto.contract.ContractChangePlanDto; |
| | | import com.java110.dto.contract.ContractChangePlanDetailDto; |
| | | import com.java110.dto.contract.ContractChangePlanRoomDto; |
| | | import com.java110.dto.contract.ContractRoomDto; |
| | | import com.java110.dto.fee.FeeDto; |
| | | import com.java110.dto.owner.OwnerRoomRelDto; |
| | | import com.java110.dto.rentingPool.RentingPoolDto; |
| | | import com.java110.dto.renting.RentingPoolDto; |
| | | import com.java110.dto.store.StoreDto; |
| | | import com.java110.intf.common.IContractApplyUserInnerServiceSMO; |
| | | import com.java110.intf.common.IContractChangeUserInnerServiceSMO; |
| | | import com.java110.intf.community.IRoomInnerServiceSMO; |
| | | import com.java110.intf.store.*; |
| | | import com.java110.intf.store.IContractAttrInnerServiceSMO; |
| | | import com.java110.intf.store.IContractChangePlanDetailInnerServiceSMO; |
| | | import com.java110.intf.store.IContractChangePlanInnerServiceSMO; |
| | | import com.java110.intf.store.IContractChangePlanRoomInnerServiceSMO; |
| | | import com.java110.intf.store.IContractFileInnerServiceSMO; |
| | | import com.java110.intf.store.IContractInnerServiceSMO; |
| | | import com.java110.intf.store.IContractRoomInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO; |
| | | import com.java110.intf.user.IRentingPoolInnerServiceSMO; |
| | | import com.java110.po.contract.ContractPo; |
| | | import com.java110.po.contractAttr.ContractAttrPo; |
| | | import com.java110.po.contractChangePlan.ContractChangePlanPo; |
| | | import com.java110.po.contractFile.ContractFilePo; |
| | | import com.java110.po.contractRoom.ContractRoomPo; |
| | | import com.java110.po.contract.ContractAttrPo; |
| | | import com.java110.po.contract.ContractChangePlanPo; |
| | | import com.java110.po.contract.ContractFilePo; |
| | | import com.java110.po.contract.ContractRoomPo; |
| | | import com.java110.po.owner.OwnerRoomRelPo; |
| | | import com.java110.po.rentingPool.RentingPoolPo; |
| | | import com.java110.po.renting.RentingPoolPo; |
| | | import com.java110.po.room.RoomPo; |
| | | import com.java110.store.bmo.contract.IUpdateContractBMO; |
| | | import com.java110.store.bmo.contractFile.IDeleteContractFileBMO; |
| | | import com.java110.utils.constant.StatusConstant; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.DateUtil; |
| | | 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.Date; |
| | | import java.util.List; |
| | | |
| | | @Service("updateContractBMOImpl") |
| | |
| | | |
| | | } |
| | | |
| | | @Java110Transactional |
| | | public ResponseEntity<String> update(ContractDto contractPo, JSONObject reqJson) { |
| | | |
| | | int flag = contractInnerServiceSMOImpl.updateContract(contractPo); |
| | | |
| | | if (flag < 1) { |
| | | return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败"); |
| | | |
| | | } |
| | | |
| | | //附件保存--先删除原来所有的附件再进行保存 |
| | | // ContractFilePo contractFilePo = new ContractFilePo(); |
| | | // contractFilePo.setContractId(contractPo.getContractId()); |
| | | // deleteContractFileBMOImpl.delete(contractFilePo); |
| | | |
| | | // List<ContractFilePo> filePos = contractPo.getContractFilePo(); |
| | | // if (filePos != null) { |
| | | // for (ContractFilePo file : filePos) { |
| | | // if (file.getFileRealName().length() > 0 && file.getFileSaveName().length() > 0) { |
| | | // file.setContractId(contractPo.getContractId()); |
| | | // contractFileInnerServiceSMOImpl.saveContractFile(file); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | |
| | | // noticeRentUpdateState(contractPo); |
| | | |
| | | if (!reqJson.containsKey("contractTypeSpecs")) { |
| | | return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功"); |
| | | } |
| | | |
| | | |
| | | 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, "保存成功"); |
| | | |
| | | } |
| | | @Override |
| | | public ResponseEntity<String> needAuditContract(ContractDto contractDto, JSONObject reqJson) { |
| | | |
| | |
| | | ContractPo contractPo = BeanConvertUtil.covertBean(contractChangePlanDetailDtos.get(0), ContractPo.class); |
| | | |
| | | contractInnerServiceSMOImpl.updateContract(contractPo); |
| | | dealContractChangePlanRoom(contractChangePlanDto, contractDtos.get(0)); |
| | | //todo 解决合同bug 只有 资产变更时 操作 合同房屋 |
| | | if (ContractChangePlanDto.PLAN_TYPE_CHANGE_ROOM.equals(contractChangePlanDtos.get(0).getPlanType())) { |
| | | dealContractChangePlanRoom(contractChangePlanDto, contractDtos.get(0)); |
| | | } |
| | | |
| | | //todo 如果是租期变更时 将房屋的时间修改为变更后的时间 |
| | | if (ContractChangePlanDto.PLAN_TYPE_CHANGE_RENT_DATE.equals(contractChangePlanDtos.get(0).getPlanType())) { |
| | | changeRoomEndTime(contractChangePlanDto, contractDtos.get(0)); |
| | | } |
| | | |
| | | } else { //修改为审核中 |
| | | ContractChangePlanPo contractChangePlanPo = new ContractChangePlanPo(); |
| | |
| | | contractChangePlanInnerServiceSMOImpl.updateContractChangePlan(contractChangePlanPo); |
| | | } |
| | | return ResultVo.success(); |
| | | } |
| | | |
| | | /** |
| | | * 修改房屋的租期 |
| | | * |
| | | * @param contractChangePlanDto |
| | | * @param contractDto |
| | | */ |
| | | private void changeRoomEndTime(ContractChangePlanDto contractChangePlanDto, ContractDto contractDto) { |
| | | |
| | | //查询合同房屋 |
| | | ContractRoomDto contractRoomDto = new ContractRoomDto(); |
| | | contractRoomDto.setStoreId(contractChangePlanDto.getStoreId()); |
| | | contractRoomDto.setContractId(contractDto.getContractId()); |
| | | List<ContractRoomDto> oldContractRoomDtos = contractRoomInnerServiceSMOImpl.queryContractRooms(contractRoomDto); |
| | | if (oldContractRoomDtos == null || oldContractRoomDtos.size() < 1) { |
| | | return; |
| | | } |
| | | Date contractEndDate = DateUtil.getDateFromStringA(contractDto.getEndTime()); |
| | | for (ContractRoomDto oldContractRoomDto : oldContractRoomDtos) { |
| | | OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); |
| | | ownerRoomRelDto.setRoomId(oldContractRoomDto.getRoomId()); |
| | | ownerRoomRelDto.setOwnerId(contractDto.getObjId()); |
| | | List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); |
| | | |
| | | if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) { // 说明业主没有发生变化,后续工作不做处理 |
| | | continue; |
| | | } |
| | | |
| | | // todo 如果合同的小于房屋的则 不修改 |
| | | // todo 这块可以根据实际的一个使用情况看看要不要限制 |
| | | Date roomEndDate = ownerRoomRelDtos.get(0).getEndTime(); |
| | | if(contractEndDate.getTime() < roomEndDate.getTime()){ |
| | | continue; |
| | | } |
| | | |
| | | //todo 修改时间 |
| | | OwnerRoomRelPo ownerRoomRelPo = new OwnerRoomRelPo(); |
| | | ownerRoomRelPo.setEndTime(contractDto.getEndTime()); |
| | | ownerRoomRelPo.setStartTime(contractDto.getStartTime()); |
| | | ownerRoomRelPo.setRelId(ownerRoomRelDtos.get(0).getRelId()); |
| | | ownerRoomRelInnerServiceSMOImpl.updateOwnerRoomRels(ownerRoomRelPo); |
| | | } |
| | | } |
| | | |
| | | private void dealContractChangePlanRoom(ContractChangePlanDto contractChangePlanDto, ContractDto contractDto) { |
| | |
| | | doDelOldRoomRel(contractChangePlanRoomDtos, oldContractRoomDtos); |
| | | return; |
| | | } |
| | | doAddRoomRel(contractDto, oldContractRoomDtos, contractChangePlanRoomDtos); |
| | | |
| | | //删除老的关系值 |
| | | doDelOldRoomRel(contractChangePlanRoomDtos, oldContractRoomDtos); |
| | | //增加 |
| | | doAddRoomRel(contractDto, oldContractRoomDtos, contractChangePlanRoomDtos); |
| | | |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | private boolean isDelOldRoom(ContractRoomDto oldContractRoomDto, List<ContractChangePlanRoomDto> contractChangePlanRoomDtos) { |
| | | if (contractChangePlanRoomDtos == null || contractChangePlanRoomDtos.size() > 0) { |
| | | if (contractChangePlanRoomDtos == null || contractChangePlanRoomDtos.size() < 1) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | private boolean isOldRoom(ContractChangePlanRoomDto tmpContractChangePlanRoomDto, List<ContractRoomDto> oldContractRoomDtos) { |
| | | if (oldContractRoomDtos == null || oldContractRoomDtos.size() > 0) { |
| | | if (oldContractRoomDtos == null || oldContractRoomDtos.size() < 1) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private void updateContractAttr(JSONObject jsonObject, ContractDto 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("保存属性失败"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 修改 房屋租赁状态 |
| | | * |