package com.java110.api.bmo.room.impl; import com.alibaba.fastjson.JSONObject; import com.java110.api.bmo.ApiBaseBMO; import com.java110.api.bmo.room.IRoomBMO; 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.owner.IOwnerRoomRelInnerServiceSMO; import com.java110.core.smo.room.IRoomInnerServiceSMO; import com.java110.dto.RoomDto; import com.java110.dto.fee.FeeConfigDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.owner.OwnerRoomRelDto; import com.java110.utils.constant.*; import com.java110.utils.exception.ListenerExecuteException; import com.java110.utils.util.Assert; 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.List; /** * @ClassName RoomBMOImpl * @Description TODO * @Author wuxw * @Date 2020/3/9 23:43 * @Version 1.0 * add by wuxw 2020/3/9 **/ @Service("roomBMOImpl") public class RoomBMOImpl extends ApiBaseBMO implements IRoomBMO { @Autowired private IRoomInnerServiceSMO roomInnerServiceSMOImpl; @Autowired private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl; @Autowired private IFeeInnerServiceSMO feeInnerServiceSMOImpl; @Autowired private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMO; /** * 修改房屋 * * @param paramInJson 接口调用放传入入参 * @param dataFlowContext 数据上下文 * @return 订单服务能够接受的报文 */ public JSONObject updateRoom(JSONObject paramInJson, DataFlowContext dataFlowContext) { RoomDto roomDto = new RoomDto(); roomDto.setCommunityId(paramInJson.getString("communityId")); roomDto.setRoomId(paramInJson.getString("roomId")); List roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); Assert.listOnlyOne(roomDtos, "存在" + roomDtos.size() + "条房屋信息"); JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_ROOM_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessUnit = new JSONObject(); businessUnit.putAll(BeanConvertUtil.beanCovertMap(roomDtos.get(0))); businessUnit.putAll(paramInJson); businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessRoom", businessUnit); return business; } public JSONObject addBusinessFloor(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FLOOR_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessObj = new JSONObject(); businessObj.putAll(paramInJson); //计算 应收金额 business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessFloor", businessObj); return business; } /** * 添加小区成员 * * @param paramInJson 组装 楼小区关系 * @return 小区成员信息 */ public JSONObject addCommunityMember(JSONObject paramInJson,DataFlowContext dataFlowContext) { JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_MEMBER_JOINED_COMMUNITY); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ + 1); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessCommunityMember = new JSONObject(); businessCommunityMember.put("communityMemberId", "-1"); businessCommunityMember.put("communityId", paramInJson.getString("communityId")); businessCommunityMember.put("memberId", paramInJson.getString("floorId")); businessCommunityMember.put("memberTypeCd", CommunityMemberTypeConstant.FLOOR); businessCommunityMember.put("auditStatusCd", StateConstant.AGREE_AUDIT); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessCommunityMember", businessCommunityMember); return business; } public JSONObject addBusinessUnit(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_UNIT_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessObj = new JSONObject(); businessObj.putAll(paramInJson); //计算 应收金额 business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessUnit", businessObj); return business; } public JSONObject addBusinessRoom(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_ROOM_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessObj = new JSONObject(); businessObj.putAll(paramInJson); //计算 应收金额 business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessRoom", businessObj); return business; } /** * 添加小区楼信息 * * @param paramInJson 接口调用放传入入参 * @param dataFlowContext 数据上下文 * @return 订单服务能够接受的报文 */ public JSONObject deleteRoom(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_DELETE_ROOM_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessUnit = new JSONObject(); businessUnit.putAll(paramInJson); businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessRoom", businessUnit); return business; } /** * 售卖房屋信息 * * @param paramInJson 接口调用放传入入参 * @param dataFlowContext 数据上下文 * @return 订单服务能够接受的报文 */ public JSONObject exitRoom(JSONObject paramInJson, DataFlowContext dataFlowContext) { //根据ownerId 和 roomId 查询relId 删除 OwnerRoomRelDto ownerRoomRelDto = BeanConvertUtil.covertBean(paramInJson, OwnerRoomRelDto.class); List ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() != 1) { throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "数据存在问题,业主和房屋对应关系不是一条"); } JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_ROOM_REL); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessUnit = new JSONObject(); //businessUnit.putAll(paramInJson); businessUnit.put("relId", ownerRoomRelDtos.get(0).getRelId()); //businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessOwnerRoomRel", businessUnit); return business; } /** * 删除物业费用信息 * * @param paramInJson 接口调用放传入入参 * @param dataFlowContext 数据上下文 * @return 订单服务能够接受的报文 */ public JSONObject exitPropertyFee(JSONObject paramInJson, DataFlowContext dataFlowContext) { //校验物业费是否已经交清 FeeDto feeDto = new FeeDto(); feeDto.setCommunityId(paramInJson.getString("communityId")); feeDto.setIncomeObjId(paramInJson.getString("storeId")); feeDto.setPayerObjId(paramInJson.getString("roomId")); feeDto.setFeeTypeCd(FeeTypeConstant.FEE_TYPE_PROPERTY); List feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); if (feeDtos == null || feeDtos.size() != 1) { throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "数据存在问题,物业费对应关系不是一条"); } JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_DELETE_FEE_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessFee = new JSONObject(); //businessUnit.putAll(paramInJson); businessFee.put("feeId", feeDtos.get(0).getFeeId()); //businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessFee", businessFee); return business; } /** * 添加小区楼信息 * * @param paramInJson 接口调用放传入入参 * @param dataFlowContext 数据上下文 * @return 订单服务能够接受的报文 */ public JSONObject addRoom(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_ROOM_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessUnit = new JSONObject(); businessUnit.putAll(paramInJson); businessUnit.put("roomId", "-1"); businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessRoom", businessUnit); return business; } /** * 售卖房屋信息 * * @param paramInJson 接口调用放传入入参 * @param dataFlowContext 数据上下文 * @return 订单服务能够接受的报文 */ public JSONObject sellRoom(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_ROOM_REL); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessUnit = new JSONObject(); businessUnit.putAll(paramInJson); businessUnit.put("relId", "-1"); businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessOwnerRoomRel", businessUnit); return business; } /** * 添加物业费用 * * @param paramInJson 接口调用放传入入参 * @param dataFlowContext 数据上下文 * @return 订单服务能够接受的报文 */ public JSONObject addPropertyFee(JSONObject paramInJson, DataFlowContext dataFlowContext) { FeeConfigDto feeConfigDto = new FeeConfigDto(); feeConfigDto.setCommunityId(paramInJson.getString("communityId")); feeConfigDto.setIsDefault("T"); feeConfigDto.setFeeTypeCd(FeeTypeConstant.FEE_TYPE_PROPERTY); List feeConfigDtos = feeConfigInnerServiceSMO.queryFeeConfigs(feeConfigDto); Assert.listOnlyOne(feeConfigDtos, "物业费默认配置不存在或存在多条请检查"); JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ + 2); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessUnit = new JSONObject(); businessUnit.put("feeId", "-1"); businessUnit.put("configId", feeConfigDtos.get(0).getConfigId()); businessUnit.put("feeTypeCd", FeeTypeConstant.FEE_TYPE_PROPERTY); businessUnit.put("incomeObjId", paramInJson.getString("storeId")); businessUnit.put("amount", "-1.00"); businessUnit.put("startTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); businessUnit.put("endTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); businessUnit.put("communityId", paramInJson.getString("communityId")); businessUnit.put("payerObjId", paramInJson.getString("roomId")); businessUnit.put("payerObjType", "3333"); businessUnit.put("feeFlag", "1003006"); businessUnit.put("state", "2008001"); businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessFee", businessUnit); return business; } /** * 添加小区楼信息 * * @param paramInJson 接口调用放传入入参 * @param dataFlowContext 数据上下文 * @return 订单服务能够接受的报文 */ public JSONObject updateShellRoom(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject business = JSONObject.parseObject("{\"datas\":{}}"); business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_ROOM_INFO); business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ); business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S); JSONObject businessUnit = new JSONObject(); businessUnit.putAll(paramInJson); businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)); business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessRoom", businessUnit); return business; } }