Your Name
2023-07-11 d7d9b601b2e4fdb663375993e2cfbdbd363df421
service-fee/src/main/java/com/java110/fee/bmo/feeManualCollection/impl/SaveFeeManualCollectionBMOImpl.java
old mode 100644 new mode 100755
@@ -2,19 +2,57 @@
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.core.smo.IComputeFeeSMO;
import com.java110.dto.room.RoomDto;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.fee.FeeManualCollectionDto;
import com.java110.dto.fee.FeeManualCollectionDetailDto;
import com.java110.dto.owner.OwnerCarDto;
import com.java110.dto.owner.OwnerDto;
import com.java110.fee.bmo.feeManualCollection.ISaveFeeManualCollectionBMO;
import com.java110.intf.fee.IFeeManualCollectionDetailInnerServiceSMO;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.fee.IFeeInnerServiceSMO;
import com.java110.intf.fee.IFeeManualCollectionInnerServiceSMO;
import com.java110.po.feeManualCollection.FeeManualCollectionPo;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
import com.java110.intf.user.IOwnerInnerServiceSMO;
import com.java110.po.fee.FeeManualCollectionPo;
import com.java110.po.fee.FeeManualCollectionDetailPo;
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.ArrayList;
import java.util.List;
@Service("saveFeeManualCollectionBMOImpl")
public class SaveFeeManualCollectionBMOImpl implements ISaveFeeManualCollectionBMO {
    @Autowired
    private IFeeManualCollectionInnerServiceSMO feeManualCollectionInnerServiceSMOImpl;
    @Autowired
    private IFeeManualCollectionDetailInnerServiceSMO feeManualCollectionDetailInnerServiceSMOImpl;
    @Autowired
    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
    @Autowired
    private IComputeFeeSMO computeFeeSMOImpl;
    @Autowired
    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
    @Autowired
    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
    @Autowired
    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
    /**
     * 添加小区信息
@@ -25,14 +63,144 @@
    @Java110Transactional
    public ResponseEntity<String> save(FeeManualCollectionPo feeManualCollectionPo) {
        feeManualCollectionPo.setCollectionId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_receiptId));
        int flag = feeManualCollectionInnerServiceSMOImpl.saveFeeManualCollection(feeManualCollectionPo);
        RoomDto roomDto = new RoomDto();
        roomDto.setRoomId(feeManualCollectionPo.getRoomId());
        roomDto.setCommunityId(feeManualCollectionPo.getCommunityId());
        List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
        if (flag > 0) {
            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
        Assert.listOnlyOne(roomDtos, "未找到房屋信息");
        roomDto = roomDtos.get(0);
        FeeDto feeDto = new FeeDto();
        feeDto.setPayerObjId(feeManualCollectionPo.getRoomId());
        feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
        feeDto.setCommunityId(feeManualCollectionPo.getCommunityId());
        //查询费用信息arrearsEndTime
        feeDto.setArrearsEndTime(DateUtil.getCurrentDate());
        feeDto.setState(FeeDto.STATE_DOING);
        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
        if (feeDtos == null || feeDtos.size() < 1) {
            feeDtos = new ArrayList<>();
            return ResultVo.createResponseEntity(feeDtos);
        }
        List<FeeDto> tmpFeeDtos = new ArrayList<>();
        for (FeeDto tmpFeeDto : feeDtos) {
            computeFeeSMOImpl.computeOweFee(tmpFeeDto);//计算欠费金额
            //如果金额为0 就排除
            if (tmpFeeDto.getFeePrice() > 0) {
                tmpFeeDtos.add(tmpFeeDto);
            }
        }
        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
        //查询停车费
        OwnerDto ownerDto = new OwnerDto();
        ownerDto.setCommunityId(feeManualCollectionPo.getCommunityId());
        ownerDto.setRoomId(feeManualCollectionPo.getRoomId());
        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto);
        Assert.listOnlyOne(ownerDtos, "业主信息 存在多条或者不存在");
        OwnerCarDto ownerCarDto = new OwnerCarDto();
        ownerCarDto.setCommunityId(feeManualCollectionPo.getCommunityId());
        ownerCarDto.setOwnerId(ownerDtos.get(0).getOwnerId());
        List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
        addOwnerCarFee(ownerCarDtos, tmpFeeDtos);
        if (tmpFeeDtos.size() < 1) {
            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "当前房屋不存在托收费用");
        }
        FeeManualCollectionDto feeManualCollectionDto = new FeeManualCollectionDto();
        feeManualCollectionDto.setRoomId(roomDto.getRoomId());
        feeManualCollectionDto.setCommunityId(roomDto.getCommunityId());
        List<FeeManualCollectionDto> feeManualCollectionDtos = feeManualCollectionInnerServiceSMOImpl.queryFeeManualCollections(feeManualCollectionDto);
        if (feeManualCollectionDtos == null || feeManualCollectionDtos.size() < 1) {
            feeManualCollectionPo.setOwnerId(ownerDtos.get(0).getOwnerId());
            feeManualCollectionPo.setLink(ownerDtos.get(0).getLink());
            feeManualCollectionPo.setOwnerName(ownerDtos.get(0).getName());
            feeManualCollectionPo.setState(FeeManualCollectionDto.STATE_COLLECTION);
            feeManualCollectionPo.setRoomArea(roomDto.getBuiltUpArea());
            feeManualCollectionPo.setRoomName(roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + roomDto.getRoomNum());
            feeManualCollectionPo.setCollectionId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_receiptId));
            int flag = feeManualCollectionInnerServiceSMOImpl.saveFeeManualCollection(feeManualCollectionPo);
            if (flag < 1) {
                return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
            }
        } else {
            feeManualCollectionPo = BeanConvertUtil.covertBean(feeManualCollectionDtos.get(0), FeeManualCollectionPo.class);
        }
        for (FeeDto tmpFeeDto : tmpFeeDtos) {
            saveFeeManualCollectionDetailInfo(tmpFeeDto, feeManualCollectionPo);
        }
        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
    }
    private void saveFeeManualCollectionDetailInfo(FeeDto tmpFeeDto, FeeManualCollectionPo feeManualCollectionPo) {
        FeeManualCollectionDetailPo feeManualCollectionDetailPo = new FeeManualCollectionDetailPo();
        feeManualCollectionDetailPo.setAmount(tmpFeeDto.getFeePrice() + "");
        feeManualCollectionDetailPo.setCollectionId(feeManualCollectionPo.getCollectionId());
        feeManualCollectionDetailPo.setCommunityId(feeManualCollectionPo.getCommunityId());
        feeManualCollectionDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
        feeManualCollectionDetailPo.setFeeId(tmpFeeDto.getFeeId());
        feeManualCollectionDetailPo.setEndTime(DateUtil.getFormatTimeString(tmpFeeDto.getDeadlineTime(), DateUtil.DATE_FORMATE_STRING_A));
        feeManualCollectionDetailPo.setFeeName(StringUtil.isEmpty(tmpFeeDto.getImportFeeName()) ? tmpFeeDto.getFeeName() : tmpFeeDto.getImportFeeName());
        feeManualCollectionDetailPo.setStartTime(DateUtil.getFormatTimeString(tmpFeeDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
        feeManualCollectionDetailPo.setState(FeeManualCollectionDetailDto.STATE_COLLECTION);
        FeeManualCollectionDetailDto feeManualCollectionDetailDto = new FeeManualCollectionDetailDto();
        feeManualCollectionDetailDto.setFeeId(tmpFeeDto.getFeeId());
        feeManualCollectionDetailDto.setCollectionId(feeManualCollectionPo.getCollectionId());
        feeManualCollectionDetailDto.setCommunityId(feeManualCollectionPo.getCommunityId());
        List<FeeManualCollectionDetailDto> feeManualCollectionDetailDtos = feeManualCollectionDetailInnerServiceSMOImpl.queryFeeManualCollectionDetails(feeManualCollectionDetailDto);
        if (feeManualCollectionDetailDtos == null || feeManualCollectionDetailDtos.size() < 1) {
            feeManualCollectionDetailInnerServiceSMOImpl.saveFeeManualCollectionDetail(feeManualCollectionDetailPo);
        } else {
            feeManualCollectionDetailPo.setDetailId(feeManualCollectionDetailDtos.get(0).getDetailId());
            feeManualCollectionDetailInnerServiceSMOImpl.updateFeeManualCollectionDetail(feeManualCollectionDetailPo);
        }
    }
    /**
     * 添加车位费
     *
     * @param ownerCarDtos
     * @param tmpFeeDtos
     */
    private void addOwnerCarFee(List<OwnerCarDto> ownerCarDtos, List<FeeDto> tmpFeeDtos) {
        if (ownerCarDtos == null || ownerCarDtos.size() < 1) {
            return;
        }
        for (OwnerCarDto ownerCarDto : ownerCarDtos) {
            FeeDto feeDto = new FeeDto();
            feeDto.setPayerObjId(ownerCarDto.getCarId());
            feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_PARKING_SPACE);
            feeDto.setCommunityId(ownerCarDto.getCommunityId());
            //查询费用信息arrearsEndTime
            feeDto.setArrearsEndTime(DateUtil.getCurrentDate());
            feeDto.setState(FeeDto.STATE_DOING);
            List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
            if (feeDtos == null || feeDtos.size() < 1) {
                return;
            }
            for (FeeDto tmpFeeDto : feeDtos) {
                computeFeeSMOImpl.computeOweFee(tmpFeeDto);//计算欠费金额
                //如果金额为0 就排除
                if (tmpFeeDto.getFeePrice() > 0) {
                    tmpFeeDtos.add(tmpFeeDto);
                }
            }
        }
    }
}