| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | @Autowired |
| | | private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IPayFeeMonth payFeeMonthImpl; |
| | | |
| | | @Override |
| | | public ResponseEntity<String> query(MeterWaterDto meterWaterDto, String roomNum) { |
| | |
| | | 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; |
| | |
| | | feeTypeCd, |
| | | fees, |
| | | meterWaterPos, |
| | | feeAttrPos |
| | | feeAttrPos, |
| | | batchId, |
| | | meterType |
| | | ); |
| | | } |
| | | |
| | |
| | | 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); |
| | |
| | | |
| | | 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(); |
| | | |
| | |
| | | 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); |
| | | |
| | |
| | | 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())) { |
| | |
| | | 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()); |
| | |
| | | } |
| | | 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); |
| | |
| | | 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; |
| | | } |
| | |
| | | meterWaterDto.setObjId(roomDtos.get(0).getRoomId()); |
| | | |
| | | } else { |
| | | String[] nums = roomNum.split("-"); |
| | | String[] nums = roomNum.split("-", 2); |
| | | if (nums.length != 2) { |
| | | return false; |
| | | } |