java110
2020-09-24 cdd60f8c16d96d19b7bdf0ff548afee9dd767f7f
service-fee/src/main/java/com/java110/fee/bmo/feeManualCollection/impl/SaveFeeManualCollectionBMOImpl.java
@@ -2,19 +2,51 @@
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.core.smo.IComputeFeeSMO;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.feeManualCollection.FeeManualCollectionDto;
import com.java110.dto.feeManualCollectionDetail.FeeManualCollectionDetailDto;
import com.java110.dto.owner.OwnerCarDto;
import com.java110.dto.owner.OwnerDto;
import com.java110.fee.bmo.feeManualCollection.ISaveFeeManualCollectionBMO;
import com.java110.intf.IFeeManualCollectionDetailInnerServiceSMO;
import com.java110.intf.fee.IFeeInnerServiceSMO;
import com.java110.intf.fee.IFeeManualCollectionInnerServiceSMO;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
import com.java110.intf.user.IOwnerInnerServiceSMO;
import com.java110.po.feeManualCollection.FeeManualCollectionPo;
import com.java110.po.feeManualCollectionDetail.FeeManualCollectionDetailPo;
import com.java110.utils.util.Assert;
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;
    /**
     * 添加小区信息
@@ -25,14 +57,115 @@
    @Java110Transactional
    public ResponseEntity<String> save(FeeManualCollectionPo feeManualCollectionPo) {
        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);
            }
        }
        //查询停车费
        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, "当前房屋不存在托收费用");
        }
        feeManualCollectionPo.setOwnerId(ownerDtos.get(0).getOwnerId());
        feeManualCollectionPo.setLink(ownerCarDtos.get(0).getLink());
        feeManualCollectionPo.setOwnerName(ownerCarDtos.get(0).getOwnerName());
        feeManualCollectionPo.setState(FeeManualCollectionDto.STATE_COLLECTION);
        feeManualCollectionPo.setCollectionId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_receiptId));
        int flag = feeManualCollectionInnerServiceSMOImpl.saveFeeManualCollection(feeManualCollectionPo);
        if (flag > 0) {
            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
        if (flag < 1) {
            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
        }
        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
        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);
        feeManualCollectionDetailInnerServiceSMOImpl.saveFeeManualCollectionDetail(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);
                }
            }
        }
    }
}