java110
2023-07-06 586aa07aa928bff687eb36520de2034fff041487
service-fee/src/main/java/com/java110/fee/bmo/meterWater/impl/QueryPreMeterWaterImpl.java
@@ -3,16 +3,16 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.RoomDto;
import com.java110.dto.contractRoom.ContractRoomDto;
import com.java110.dto.room.RoomDto;
import com.java110.dto.contract.ContractRoomDto;
import com.java110.dto.fee.FeeAttrDto;
import com.java110.dto.fee.FeeConfigDto;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.meterWater.ImportExportMeterWaterDto;
import com.java110.dto.meterWater.MeterWaterDto;
import com.java110.dto.meter.ImportExportMeterWaterDto;
import com.java110.dto.meter.MeterWaterDto;
import com.java110.dto.owner.OwnerDto;
import com.java110.dto.parking.ParkingSpaceDto;
import com.java110.fee.bmo.meterWater.IQueryPreMeterWater;
import com.java110.fee.feeMonth.IPayFeeMonth;
import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
@@ -22,14 +22,14 @@
import com.java110.intf.user.IOwnerInnerServiceSMO;
import com.java110.po.fee.FeeAttrPo;
import com.java110.po.fee.PayFeePo;
import com.java110.po.meterWater.MeterWaterPo;
import com.java110.po.meter.MeterWaterPo;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.java110.core.log.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@@ -66,6 +66,8 @@
    @Autowired
    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
    @Autowired
    private IPayFeeMonth payFeeMonthImpl;
    @Override
    public ResponseEntity<String> query(MeterWaterDto meterWaterDto, String roomNum) {
@@ -118,6 +120,8 @@
        String configId = reqJson.getString("configId");
        String userId = reqJson.getString("userId");
        String feeTypeCd = reqJson.getString("feeTypeCd");
        String batchId = reqJson.getString("batchId");
        String meterType = reqJson.getString("meterType");
        JSONArray importMeteWaterFees = reqJson.getJSONArray("importMeteWaterFees");
        JSONObject meteWaterJson = null;
        ImportExportMeterWaterDto importExportMeterWaterDto = null;
@@ -138,7 +142,9 @@
                    feeTypeCd,
                    fees,
                    meterWaterPos,
                    feeAttrPos
                    feeAttrPos,
                    batchId,
                    meterType
            );
        }
@@ -152,14 +158,23 @@
            feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
        }
        meterWaterInnerServiceSMOImpl.saveMeterWaters(meterWaterPos);
        // todo 这里异步的方式计算 月数据 和欠费数据
        List<String> feeIds = new ArrayList<>();
        for (PayFeePo feePo : fees) {
            feeIds.add(feePo.getFeeId());
        }
        payFeeMonthImpl.doGeneratorFeeMonths(feeIds, fees.get(0).getCommunityId());
        return ResultVo.success();
    }
    private void dealImportExportMeterWater(ImportExportMeterWaterDto importExportMeterWaterDto, String communityId,
                                            String storeId, String configId, String userId, String feeTypeCd,
                                            List<PayFeePo> fees, List<MeterWaterPo> meterWaterPos, List<FeeAttrPo> feeAttrPos) {
                                            List<PayFeePo> fees, List<MeterWaterPo> meterWaterPos, List<FeeAttrPo> feeAttrPos,
                                            String batchId, String meterType) {
        RoomDto roomDto = new RoomDto();
        roomDto.setCommunityId(communityId);
@@ -170,14 +185,9 @@
        Assert.listOnlyOne(roomDtos, "房屋未找到或找到多条" + importExportMeterWaterDto.getFloorNum() + "-" + importExportMeterWaterDto.getUnitNum() + "-" + importExportMeterWaterDto.getRoomNum());
        if (FeeConfigDto.FEE_TYPE_CD_WATER.equals(feeTypeCd)) {
            importExportMeterWaterDto.setMeterType("1010");
        } else if (FeeConfigDto.FEE_TYPE_CD_GAS.equals(feeTypeCd)) {
            importExportMeterWaterDto.setMeterType("3030");
        } else {
            importExportMeterWaterDto.setMeterType("2020");
        }
        String roomName = importExportMeterWaterDto.getFloorNum() + "-" + importExportMeterWaterDto.getUnitNum() + "-" + importExportMeterWaterDto.getRoomNum();
        importExportMeterWaterDto.setMeterType(meterType);
        //查询房屋是否有合同
        ContractRoomDto contractRoomDto = new ContractRoomDto();
@@ -193,6 +203,7 @@
        payFeePo.setStartTime(importExportMeterWaterDto.getPreReadingTime());
        payFeePo.setEndTime(importExportMeterWaterDto.getPreReadingTime());
        payFeePo.setPayerObjId(roomDtos.get(0).getRoomId());
        payFeePo.setBatchId(batchId);
        //payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
        payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
@@ -204,8 +215,7 @@
            feeAttrPo.setCommunityId(communityId);
            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_IMPORT_FEE_NAME);
            String feeName = importExportMeterWaterDto.getFloorNum() + "栋" + importExportMeterWaterDto.getUnitNum() + "单元" + importExportMeterWaterDto.getRoomNum() + "室";
            String feeName = roomName;
            if ("1010".equals(importExportMeterWaterDto.getMeterType())) {
                feeName += "水费";
            } else if ("2020".equals(importExportMeterWaterDto.getMeterType())) {
@@ -218,13 +228,23 @@
            feeAttrPos.add(feeAttrPo);
        }
        //todo 保存房屋名称
        FeeAttrPo feeAttrPo = new FeeAttrPo();
        feeAttrPo.setCommunityId(communityId);
        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_PAY_OBJECT_NAME);
        feeAttrPo.setValue(roomName);
        feeAttrPo.setFeeId(payFeePo.getFeeId());
        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
        feeAttrPos.add(feeAttrPo);
        OwnerDto ownerDto = new OwnerDto();
        ownerDto.setCommunityId(communityId);
        ownerDto.setRoomId(roomDtos.get(0).getRoomId());
        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto);
        if (ownerDtos != null && ownerDtos.size() > 0) {
            FeeAttrPo feeAttrPo = new FeeAttrPo();
            feeAttrPo = new FeeAttrPo();
            feeAttrPo.setCommunityId(communityId);
            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
            feeAttrPo.setValue(ownerDtos.get(0).getOwnerId());
@@ -251,6 +271,11 @@
        }
        payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
        payFeePo.setState(FeeDto.STATE_DOING);
        // 如果 当前读数小于等于上期读数
        if (Double.parseDouble(importExportMeterWaterDto.getCurDegrees()) <= Double.parseDouble(importExportMeterWaterDto.getPreDegrees())) {
            payFeePo.setState(FeeDto.STATE_FINISH);
        }
        payFeePo.setUserId(userId);
        payFeePo.setFeeTypeCd(feeTypeCd);
        payFeePo.setConfigId(configId);
@@ -285,7 +310,7 @@
            return false;
        }
        if (MeterWaterDto.METER_TYPE_ROOM.equals(meterWaterDto.getObjType())) {
            String[] nums = roomNum.split("-");
            String[] nums = roomNum.split("-", 3);
            if (nums.length != 3) {
                return false;
            }
@@ -302,7 +327,7 @@
            meterWaterDto.setObjId(roomDtos.get(0).getRoomId());
        } else {
            String[] nums = roomNum.split("-");
            String[] nums = roomNum.split("-", 2);
            if (nums.length != 2) {
                return false;
            }