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<RoomDto> rooms = roomInnerServiceSMOImpl.queryRoomsByOwner(roomDto);
|
|
//没有房屋时返回
|
if (rooms == null || rooms.size() < 1) {
|
return;
|
}
|
|
OwnerDto ownerDto = new OwnerDto();
|
ownerDto.setMemberId(ownerPo.getMemberId());
|
ownerDto.setCommunityId(ownerPo.getCommunityId());
|
List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
|
Assert.listOnlyOne(ownerDtos, "业主不存在");
|
|
//拿到小区ID
|
String communityId = ownerPo.getCommunityId();
|
|
List<String> 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<FeeDto> 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<FeeAttrDto> 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;
|
}
|
}
|