java110-bean/src/main/java/com/java110/dto/contract/ContractDto.java
@@ -42,6 +42,7 @@ private String[] contractIds; private String objId; private String contractName; private String contractNameLike; private String startTime; private String endTime; private String state; @@ -443,4 +444,12 @@ public void setCommunityId(String communityId) { this.communityId = communityId; } public String getContractNameLike() { return contractNameLike; } public void setContractNameLike(String contractNameLike) { this.contractNameLike = contractNameLike; } } java110-db/src/main/resources/mapper/store/ContractServiceDaoImplMapper.xml
@@ -92,6 +92,9 @@ <if test="contractName !=null and contractName != ''"> and t.contract_name= #{contractName} </if> <if test="contractNameLike !=null and contractNameLike != ''"> and t.contract_name like concat('%',#{contractNameLike},'%') </if> <if test="startTime !=null"> and t.start_time= #{startTime} </if> service-api/src/main/java/com/java110/api/listener/fee/PayFeePreListener.java
@@ -118,6 +118,9 @@ } else if (AppDto.WECHAT_OWNER_APP_ID.equals(appId)) { //微信公众号支付 paramObj.put("primeRate", "6"); paramObj.put("remark", "线上公众号支付"); }else{ paramObj.put("primeRate", "5"); paramObj.put("remark", "线上小程序支付"); } //添加单元信息 service-api/src/main/java/com/java110/api/listener/room/SaveRoomListener.java
@@ -83,11 +83,17 @@ if (units == null || units.size() < 1) { throw new IllegalArgumentException("传入单元ID不是该小区的单元"); } reqJson.put("unitNum", units.get(0).getUnitNum()); } @Override protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) { reqJson.put("roomType", RoomDto.ROOM_TYPE_ROOM); if ("0".equals(reqJson.getString("unitNum"))) { // 处理为商铺 reqJson.put("roomType", RoomDto.ROOM_TYPE_SHOPS); } else { reqJson.put("roomType", RoomDto.ROOM_TYPE_ROOM); } roomBMOImpl.addRoom(reqJson, context); } service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java
@@ -158,6 +158,7 @@ || "/transactionLog/queryTransactionLogMessage".equals(serviceCode) || "file.getFile".equals(serviceCode) || "file.getFileByObjId".equals(serviceCode) || "/machine/heartbeat".equals(serviceCode) // 心跳也不记录 ) { return; } service-front/src/main/java/com/java110/front/smo/assetImport/impl/AssetImportSMOImpl.java
@@ -5,19 +5,11 @@ import com.java110.core.component.BaseComponentSMO; import com.java110.core.context.IPageData; import com.java110.dto.RoomDto; import com.java110.entity.assetImport.ImportFee; import com.java110.entity.assetImport.ImportFloor; import com.java110.entity.assetImport.ImportOwner; import com.java110.entity.assetImport.ImportParkingSpace; import com.java110.entity.assetImport.ImportRoom; import com.java110.entity.assetImport.*; import com.java110.entity.component.ComponentValidateResult; import com.java110.front.smo.assetImport.IAssetImportSMO; import com.java110.utils.constant.ServiceConstant; import com.java110.utils.util.Assert; import com.java110.utils.util.CommonUtil; import com.java110.utils.util.DateUtil; import com.java110.utils.util.ImportExcelUtils; import com.java110.utils.util.StringUtil; import com.java110.utils.util.*; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; @@ -794,7 +786,7 @@ Assert.hasValue(os[3], "房屋信息选项中" + (osIndex + 1) + "行房屋楼层为空"); Assert.hasValue(os[4], "房屋信息选项中" + (osIndex + 1) + "行房屋户型为空"); Assert.hasValue(os[5], "房屋信息选项中" + (osIndex + 1) + "行建筑面积为空"); if (!StringUtil.isNullOrNone(os[6])) { if (os.length > 6 && !StringUtil.isNullOrNone(os[6])) { Assert.hasValue(os[7], "房屋信息选项中" + (osIndex + 1) + "行房屋费用为空"); Assert.hasValue(os[8], "房屋信息选项中" + (osIndex + 1) + "行费用到期时间为空"); } @@ -805,11 +797,11 @@ importRoom.setSection(os[4].toString()); importRoom.setBuiltUpArea(Double.parseDouble(os[5].toString())); if (!StringUtil.isNullOrNone(os[6])) { if (os.length > 6 && !StringUtil.isNullOrNone(os[6])) { importRoom.setRoomFeeId(os[7].toString()); importRoom.setFeeEndDate(os[8].toString()); } if (StringUtil.isNullOrNone(os[6])) { if (os.length < 7 || StringUtil.isNullOrNone(os[6])) { rooms.add(importRoom); continue; } service-store/src/main/java/com/java110/store/api/ContractApi.java
@@ -379,6 +379,7 @@ @RequestParam(value = "expiration", required = false) String expiration, @RequestParam(value = "objId", required = false) String objId, @RequestParam(value = "contractId", required = false) String contractId, @RequestParam(value = "contractNameLike", required = false) String contractNameLike, @RequestParam(value = "contractCode", required = false) String contractCode, @RequestParam(value = "page") int page, @RequestParam(value = "row") int row) { @@ -390,6 +391,7 @@ contractDto.setObjId(objId); contractDto.setContractId(contractId); contractDto.setContractCode(contractCode); contractDto.setContractNameLike(contractNameLike); //如果是到期合同 if ("1".equals(expiration)) { contractDto.setNoStates(new String[]{ContractDto.STATE_COMPLAINT, ContractDto.STATE_FAIL}); service-store/src/main/java/com/java110/store/bmo/contract/impl/DeleteContractBMOImpl.java
@@ -1,19 +1,47 @@ package com.java110.store.bmo.contract.impl; import com.java110.core.annotation.Java110Transactional; import com.java110.dto.RoomDto; import com.java110.dto.contractRoom.ContractRoomDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.owner.OwnerRoomRelDto; import com.java110.intf.community.IRoomInnerServiceSMO; import com.java110.intf.fee.IFeeInnerServiceSMO; import com.java110.intf.store.IContractInnerServiceSMO; import com.java110.intf.store.IContractRoomInnerServiceSMO; import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO; import com.java110.po.contract.ContractPo; import com.java110.po.owner.OwnerRoomRelPo; import com.java110.po.room.RoomPo; import com.java110.store.bmo.contract.IDeleteContractBMO; import com.java110.utils.constant.StatusConstant; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; 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("deleteContractBMOImpl") public class DeleteContractBMOImpl implements IDeleteContractBMO { @Autowired private IContractInnerServiceSMO contractInnerServiceSMOImpl; @Autowired private IContractRoomInnerServiceSMO contractRoomInnerServiceSMOImpl; @Autowired private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl; @Autowired private IRoomInnerServiceSMO roomInnerServiceSMOImpl; @Autowired private IFeeInnerServiceSMO feeInnerServiceSMOImpl; /** * @param contractPo 数据 @@ -24,11 +52,104 @@ int flag = contractInnerServiceSMOImpl.deleteContract(contractPo); if (flag > 0) { return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功"); if (flag < 1) { return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败"); } return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败"); deleteContractRoomRel(contractPo); return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功"); } private void deleteContractRoomRel(ContractPo contractPo) { // 查询合同关联房屋 ContractRoomDto contractRoomDto = new ContractRoomDto(); contractRoomDto.setContractId(contractPo.getContractId()); contractRoomDto.setStoreId(contractPo.getStoreId()); List<ContractRoomDto> contractRoomDtos = contractRoomInnerServiceSMOImpl.queryContractRooms(contractRoomDto); if (contractRoomDtos == null || contractRoomDtos.size() < 1) { return; } List<ContractRoomDto> tmpContractRoomDtos = null; OwnerRoomRelPo ownerRoomRelPo = null; for (ContractRoomDto tmpContractRoomDto : contractRoomDtos) { //判断房屋是否还签订了其他的合同 contractRoomDto = new ContractRoomDto(); contractRoomDto.setRoomId(tmpContractRoomDto.getRoomId()); contractRoomDto.setStoreId(contractPo.getStoreId()); tmpContractRoomDtos = contractRoomInnerServiceSMOImpl.queryContractRooms(contractRoomDto); //还有其他的合同 先不处理 if (tmpContractRoomDtos != null && tmpContractRoomDtos.size() > 1) { continue; } //刷业主 OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); ownerRoomRelDto.setRoomId(tmpContractRoomDto.getRoomId()); List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) { // 说明房屋没有业主 continue; } validateRoom(tmpContractRoomDto); //修改房屋状态 RoomPo roomPo = new RoomPo(); roomPo.setRoomId(ownerRoomRelDtos.get(0).getRoomId()); roomPo.setState(RoomDto.STATE_FREE); roomPo.setStatusCd(StatusConstant.STATUS_CD_VALID); roomInnerServiceSMOImpl.updateRooms(roomPo); //删除关系 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); } } /** * 房屋是否欠费校验 * * @param tmpContractRoomDto */ private void validateRoom(ContractRoomDto tmpContractRoomDto) { //校验 房屋上是否有费用存在 //判断房屋是否存在 RoomDto roomDto = new RoomDto(); roomDto.setRoomId(tmpContractRoomDto.getRoomId()); roomDto.setCommunityId(tmpContractRoomDto.getCommunityId()); List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); Assert.listOnlyOne(roomDtos, "房屋不存在"); //查询房屋时候有欠费 FeeDto feeDto = new FeeDto(); feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); feeDto.setPayerObjId(tmpContractRoomDto.getRoomId()); feeDto.setState(FeeDto.STATE_DOING); List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); if (feeDtos != null && feeDtos.size() > 0) { throw new IllegalArgumentException(roomDtos.get(0).getRoomNum() + "房屋存在未结束的费用 请先处理"); } } } service-store/src/main/java/com/java110/store/bmo/contract/impl/UpdateContractBMOImpl.java
@@ -4,6 +4,7 @@ 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.dto.contractAttr.ContractAttrDto; import com.java110.dto.contractChangePlan.ContractChangePlanDto; @@ -11,11 +12,14 @@ import com.java110.dto.contractChangePlanRoom.ContractChangePlanRoomDto; import com.java110.dto.contractRoom.ContractRoomDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.owner.OwnerRoomRelDto; import com.java110.dto.rentingPool.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.user.IOwnerRoomRelInnerServiceSMO; import com.java110.intf.user.IRentingPoolInnerServiceSMO; import com.java110.po.contract.ContractPo; import com.java110.po.contractAttr.ContractAttrPo; @@ -23,7 +27,9 @@ import com.java110.po.contractChangePlanRoom.ContractChangePlanRoomPo; import com.java110.po.contractFile.ContractFilePo; import com.java110.po.contractRoom.ContractRoomPo; import com.java110.po.owner.OwnerRoomRelPo; import com.java110.po.rentingPool.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; @@ -75,6 +81,13 @@ @Autowired private IDeleteContractFileBMO deleteContractFileBMOImpl; @Autowired private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl; @Autowired private IRoomInnerServiceSMO roomInnerServiceSMOImpl; /** * @param contractPo * @return 订单服务能够接受的报文 @@ -95,10 +108,12 @@ deleteContractFileBMOImpl.delete(contractFilePo); List<ContractFilePo> filePos = contractPo.getContractFilePo(); for (ContractFilePo file: filePos) { if (file.getFileRealName().length() > 0 && file.getFileSaveName().length() > 0){ file.setContractId(contractPo.getContractId()); contractFileInnerServiceSMOImpl.saveContractFile(file); if(filePos != null) { for (ContractFilePo file : filePos) { if (file.getFileRealName().length() > 0 && file.getFileSaveName().length() > 0) { file.setContractId(contractPo.getContractId()); contractFileInnerServiceSMOImpl.saveContractFile(file); } } } @@ -153,6 +168,15 @@ @Override public ResponseEntity<String> needAuditContractPlan(ContractChangePlanDto contractChangePlanDto, JSONObject reqJson) { //查询老的合同信息 ContractDto contractDto = new ContractDto(); contractDto.setContractId(contractChangePlanDto.getContractId()); contractDto.setStoreId(contractChangePlanDto.getStoreId()); List<ContractDto> contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto); Assert.listOnlyOne(contractDtos, "合同不存在"); ContractChangePlanDto tmpContractChangePlanDto = new ContractChangePlanDto(); tmpContractChangePlanDto.setPlanId(contractChangePlanDto.getPlanId()); tmpContractChangePlanDto.setStoreId(contractChangePlanDto.getStoreId()); @@ -179,7 +203,7 @@ ContractPo contractPo = BeanConvertUtil.covertBean(contractChangePlanDetailDtos.get(0), ContractPo.class); contractInnerServiceSMOImpl.updateContract(contractPo); dealContractChangePlanRoom(contractChangePlanDto); dealContractChangePlanRoom(contractChangePlanDto,contractDtos.get(0)); } else { //修改为审核中 ContractChangePlanPo contractChangePlanPo = new ContractChangePlanPo(); @@ -191,7 +215,13 @@ return ResultVo.success(); } private void dealContractChangePlanRoom(ContractChangePlanDto contractChangePlanDto) { private void dealContractChangePlanRoom(ContractChangePlanDto contractChangePlanDto, ContractDto contractDto) { //查询合同房屋 ContractRoomDto contractRoomDto = new ContractRoomDto(); contractRoomDto.setStoreId(contractChangePlanDto.getStoreId()); contractRoomDto.setContractId(contractDto.getContractId()); List<ContractRoomDto> oldContractRoomDtos = contractRoomInnerServiceSMOImpl.queryContractRooms(contractRoomDto); // 查询 是否有资产变更 ContractChangePlanRoomDto contractChangePlanRoomDto = new ContractChangePlanRoomDto(); @@ -202,19 +232,27 @@ List<ContractChangePlanRoomDto> contractChangePlanRoomDtos = contractChangePlanRoomInnerServiceSMOImpl.queryContractChangePlanRooms(contractChangePlanRoomDto); if(contractChangePlanRoomDtos == null || contractChangePlanRoomDtos.size() < 1){ return ; 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 = new ContractRoomPo(); contractRoomPo.setContractId(contractChangePlanRoomDtos.get(0).getContractId()); contractRoomPo.setStoreId(contractChangePlanRoomDtos.get(0).getStoreId()); contractRoomInnerServiceSMOImpl.deleteContractRoom(contractRoomPo); ContractRoomPo contractRoomPo = null; //插入新的关系值 for(ContractChangePlanRoomDto tmpContractChangePlanRoomDto : contractChangePlanRoomDtos){ for (ContractChangePlanRoomDto tmpContractChangePlanRoomDto : contractChangePlanRoomDtos) { if (isOldRoom(tmpContractChangePlanRoomDto, oldContractRoomDtos)) { continue; } contractRoomPo = new ContractRoomPo(); contractRoomPo.setContractId(contractChangePlanRoomDtos.get(0).getContractId()); contractRoomPo.setStoreId(contractChangePlanRoomDtos.get(0).getStoreId()); @@ -224,12 +262,133 @@ 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; } private void updateContractAttr(JSONObject jsonObject, ContractPo contractPo) { ContractAttrDto contractAttrDto = new ContractAttrDto(); contractAttrDto.setContractId(contractPo.getContractId()); service-store/src/main/java/com/java110/store/bmo/contractChangePlan/impl/SaveContractChangePlanBMOImpl.java
@@ -2,19 +2,25 @@ 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.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; @@ -50,6 +56,12 @@ @Autowired private IContractTypeInnerServiceSMO contractTypeInnerServiceSMOImpl; @Autowired private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl; @Autowired private IRoomInnerServiceSMO roomInnerServiceSMOImpl; /** * 添加小区信息 * @@ -75,7 +87,7 @@ contractTypeDto.setStoreId(contractDtos.get(0).getStoreId()); List<ContractTypeDto> contractTypeDtos = contractTypeInnerServiceSMOImpl.queryContractTypes(contractTypeDto); Assert.listOnlyOne(contractTypeDtos,"合同类型不存在"); Assert.listOnlyOne(contractTypeDtos, "合同类型不存在"); contractChangePlanPo.setPlanId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_planId)); int flag = contractChangePlanInnerServiceSMOImpl.saveContractChangePlan(contractChangePlanPo); @@ -101,7 +113,7 @@ throw new IllegalArgumentException("保存变更记录失败"); } dealContractChangePlanRooms(contractChangePlanPo,contractChangePlanRoomPos); dealContractChangePlanRooms(contractChangePlanPo, contractChangePlanRoomPos); //需要审核时才写 工作流 if (!ContractTypeDto.NO_AUDIT.equals(contractTypeDtos.get(0).getAudit())) { @@ -109,7 +121,7 @@ ContractChangePlanDto contractChangePlanDto = BeanConvertUtil.covertBean(contractChangePlanPo, ContractChangePlanDto.class); contractChangePlanDto.setCurrentUserId(contractChangePlanPo.getChangePerson()); contractChangeUserInnerServiceSMO.startProcess(contractChangePlanDto); }else{ } else { ContractChangePlanPo tmpContractChangePlanPo = new ContractChangePlanPo(); tmpContractChangePlanPo.setPlanId(contractChangePlanPo.getPlanId()); tmpContractChangePlanPo.setState(ContractDto.STATE_AUDIT_FINISH); @@ -127,15 +139,20 @@ ContractPo contractPo = BeanConvertUtil.covertBean(contractChangePlanDetailDtos.get(0), ContractPo.class); contractInnerServiceSMOImpl.updateContract(contractPo); dealContractChangePlanRoom(tmpContractChangePlanPo); dealContractChangePlanRoom(tmpContractChangePlanPo, contractDtos.get(0)); } return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功"); } private void dealContractChangePlanRoom(ContractChangePlanPo contractChangePlanPo) { 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(); @@ -146,19 +163,27 @@ List<ContractChangePlanRoomDto> contractChangePlanRoomDtos = contractChangePlanRoomInnerServiceSMOImpl.queryContractChangePlanRooms(contractChangePlanRoomDto); if(contractChangePlanRoomDtos == null || contractChangePlanRoomDtos.size() < 1){ return ; 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 = new ContractRoomPo(); contractRoomPo.setContractId(contractChangePlanRoomDtos.get(0).getContractId()); contractRoomPo.setStoreId(contractChangePlanRoomDtos.get(0).getStoreId()); contractRoomInnerServiceSMOImpl.deleteContractRoom(contractRoomPo); ContractRoomPo contractRoomPo = null; //插入新的关系值 for(ContractChangePlanRoomDto tmpContractChangePlanRoomDto : contractChangePlanRoomDtos){ for (ContractChangePlanRoomDto tmpContractChangePlanRoomDto : contractChangePlanRoomDtos) { if (isOldRoom(tmpContractChangePlanRoomDto, oldContractRoomDtos)) { continue; } contractRoomPo = new ContractRoomPo(); contractRoomPo.setContractId(contractChangePlanRoomDtos.get(0).getContractId()); contractRoomPo.setStoreId(contractChangePlanRoomDtos.get(0).getStoreId()); @@ -168,10 +193,133 @@ 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; } /** @@ -186,7 +334,7 @@ return; } ContractChangePlanRoomPo tmpContractChangePlanRoomPo = null; for(ContractChangePlanRoomPo contractChangePlanRoomPo : contractChangePlanRoomPos){ for (ContractChangePlanRoomPo contractChangePlanRoomPo : contractChangePlanRoomPos) { ContractRoomDto contractRoomDto = new ContractRoomDto(); contractRoomDto.setContractId(contractChangePlanPo.getContractId()); @@ -194,7 +342,7 @@ List<ContractRoomDto> contractRoomDtos = contractRoomInnerServiceSMOImpl.queryContractRooms(contractRoomDto); if(contractRoomDtos != null && contractRoomDtos.size()> 0){ if (contractRoomDtos != null && contractRoomDtos.size() > 0) { tmpContractChangePlanRoomPo = new ContractChangePlanRoomPo(); tmpContractChangePlanRoomPo.setContractId(contractChangePlanPo.getContractId()); tmpContractChangePlanRoomPo.setOwnerId(contractRoomDtos.get(0).getOwnerId());