package com.java110.job.adapt.fee.asyn.impl; import com.alibaba.fastjson.JSONObject; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.RoomDto; import com.java110.dto.fee.FeeAttrDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.owner.OwnerDto; import com.java110.entity.order.Business; import com.java110.intf.community.IRoomInnerServiceSMO; import com.java110.intf.fee.IFeeAttrInnerServiceSMO; import com.java110.intf.fee.IFeeInnerServiceSMO; import com.java110.intf.user.IOwnerInnerServiceSMO; import com.java110.job.adapt.fee.asyn.IUpdateFeeOwnerInfo; import com.java110.po.fee.FeeAttrPo; import com.java110.po.owner.OwnerPo; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class UpdateFeeOwnerInfoImpl implements IUpdateFeeOwnerInfo { @Autowired private IRoomInnerServiceSMO roomInnerServiceSMOImpl; @Autowired private IFeeInnerServiceSMO feeInnerServiceSMOImpl; @Autowired private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl; @Autowired private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl; @Override @Async public void doUpdate(Business business, JSONObject businessOwner) { OwnerPo ownerPo = BeanConvertUtil.covertBean(businessOwner, OwnerPo.class); RoomDto roomDto = new RoomDto(); roomDto.setOwnerId(ownerPo.getOwnerId()); //这种情况说明 业主已经删掉了 需要查询状态为 1 的数据 List rooms = roomInnerServiceSMOImpl.queryRoomsByOwner(roomDto); //没有房屋时返回 if (rooms == null || rooms.size() < 1) { return; } OwnerDto ownerDto = new OwnerDto(); ownerDto.setMemberId(ownerPo.getMemberId()); ownerDto.setCommunityId(ownerPo.getCommunityId()); List ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto); Assert.listOnlyOne(ownerDtos, "业主不存在"); //拿到小区ID String communityId = ownerPo.getCommunityId(); List payerObjIds = new ArrayList<>(); for (RoomDto tRoomDto : rooms) { payerObjIds.add(tRoomDto.getUnitId()); payerObjIds.add(tRoomDto.getRoomId()); payerObjIds.add(tRoomDto.getFloorId()); } FeeDto feeDto = new FeeDto(); feeDto.setCommunityId(communityId); feeDto.setPayerObjIds(payerObjIds.toArray(new String[payerObjIds.size()])); feeDto.setState(FeeDto.STATE_DOING); List feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); for (FeeDto tmpFeeDto : feeDtos) { doDealFeeDto(tmpFeeDto, ownerDtos.get(0)); } } private void doDealFeeDto(FeeDto tmpFeeDto, OwnerDto ownerDto) { //判断是否存在 业主名称 FeeAttrDto ownerNameAttr = getOwnerFeeAttr(tmpFeeDto, FeeAttrDto.SPEC_CD_OWNER_NAME); FeeAttrPo tmpFeeAttrPo = new FeeAttrPo(); if (ownerNameAttr == null) { tmpFeeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); tmpFeeAttrPo.setCommunityId(ownerDto.getCommunityId()); tmpFeeAttrPo.setFeeId(tmpFeeDto.getFeeId()); tmpFeeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME); tmpFeeAttrPo.setValue(ownerDto.getName()); feeAttrInnerServiceSMOImpl.saveFeeAttr(tmpFeeAttrPo); } else { tmpFeeAttrPo.setAttrId(ownerNameAttr.getAttrId()); tmpFeeAttrPo.setValue(ownerDto.getName()); feeAttrInnerServiceSMOImpl.updateFeeAttr(tmpFeeAttrPo); } //判断是否存在业主联系电话 ownerNameAttr = getOwnerFeeAttr(tmpFeeDto, FeeAttrDto.SPEC_CD_OWNER_LINK); tmpFeeAttrPo = new FeeAttrPo(); if (ownerNameAttr == null) { tmpFeeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); tmpFeeAttrPo.setCommunityId(ownerDto.getCommunityId()); tmpFeeAttrPo.setFeeId(tmpFeeDto.getFeeId()); tmpFeeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME); tmpFeeAttrPo.setValue(ownerDto.getName()); feeAttrInnerServiceSMOImpl.saveFeeAttr(tmpFeeAttrPo); } else { tmpFeeAttrPo.setAttrId(ownerNameAttr.getAttrId()); tmpFeeAttrPo.setValue(ownerDto.getName()); feeAttrInnerServiceSMOImpl.updateFeeAttr(tmpFeeAttrPo); } } private FeeAttrDto getOwnerFeeAttr(FeeDto tmpFeeDto, String specCd) { List feeAttrDtos = tmpFeeDto.getFeeAttrDtos(); if (feeAttrDtos == null || feeAttrDtos.size() < 1) { return null; } for (FeeAttrDto feeAttrDto : feeAttrDtos) { if (!specCd.equals(feeAttrDto.getSpecCd())) { continue; } return feeAttrDto; } return null; } }