package com.java110.job.importData.adapt; import com.alibaba.fastjson.JSONObject; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.fee.FeeAttrDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.importData.ImportOwnerRoomDto; import com.java110.dto.importData.Vtil; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.meter.MeterWaterDto; import com.java110.dto.owner.OwnerDto; import com.java110.dto.room.RoomDto; import com.java110.intf.community.IImportOwnerRoomInnerServiceSMO; import com.java110.intf.community.IRoomInnerServiceSMO; import com.java110.intf.fee.IFeeAttrInnerServiceSMO; import com.java110.intf.fee.IMeterWaterInnerServiceSMO; import com.java110.intf.fee.IPayFeeV1InnerServiceSMO; import com.java110.intf.user.IOwnerInnerServiceSMO; import com.java110.job.importData.DefaultImportData; import com.java110.job.importData.IImportDataAdapt; import com.java110.po.fee.FeeAttrPo; import com.java110.po.fee.PayFeePo; import com.java110.po.meter.MeterWaterPo; import com.java110.utils.exception.CmdException; import com.java110.utils.util.BeanConvertUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service("importElectricityFeeV2QueueData") public class ImportElectricityFeeV2QueueDataAdapt extends DefaultImportData implements IImportDataAdapt { @Autowired private IMeterWaterInnerServiceSMO meterWaterInnerServiceSMOImpl; @Autowired private IRoomInnerServiceSMO roomInnerServiceSMOImpl; @Autowired private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl; @Autowired private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl; @Autowired private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl; @Autowired private IImportOwnerRoomInnerServiceSMO importOwnerRoomInnerServiceSMOImpl; // @Autowired // private IPayFeeMonth payFeeMonthImpl; @Override public void importData(List assetImportLogDetailDtos) { for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) { try { doImportData(assetImportLogDetailDto); updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); } catch (Exception e) { e.printStackTrace(); updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); } } } private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) { JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent()); MeterWaterPo po = BeanConvertUtil.covertBean(data, MeterWaterPo.class); validateRoom(po, assetImportLogDetailDto); addFee(po, data, assetImportLogDetailDto.getLogId(), assetImportLogDetailDto); int i = 1; } private void addFee(MeterWaterPo po, JSONObject reqJson, String batchId, AssetImportLogDetailDto assetImportLogDetailDto) { PayFeePo payFeePo = BeanConvertUtil.covertBean(reqJson, PayFeePo.class); payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId)); payFeePo.setIncomeObjId(reqJson.getString("storeId")); payFeePo.setAmount(po.getUnitPrice()); if (payFeePo.getAmount().equals("")){ payFeePo.setAmount("-1"); } // payFeePo.setSecondaryFeeTypeCd("888800010190"); payFeePo.setFeeTypeCd(po.getFeeTypeCd()); payFeePo.setConfigId(po.getConfigId()); // payFeePo.setPayerObjType("3333"); payFeePo.setPayerObjId(po.getObjId()); payFeePo.setBatchId(batchId); payFeePo.setStartTime(po.getCurReadingTime()); payFeePo.setEndTime(po.getPreReadingTime()); payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); payFeePo.setbId("-1"); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_DOING); payFeePo.setIncomeObjId("102025062610470035"); payFeePo.setUserId("-1"); reqJson.put("feeId", payFeePo.getFeeId()); ArrayList meterWaterPos = new ArrayList<>(); po.setWaterId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_waterId)); po.setFeeId(payFeePo.getFeeId()); meterWaterPos.add(po); int i = meterWaterInnerServiceSMOImpl.queryMeterWatersCount(BeanConvertUtil.covertBean(BeanConvertUtil.beanCovertMap(po), MeterWaterDto.class)); if (i > 0) { throw new IllegalArgumentException("重复的电费导入"); } meterWaterInnerServiceSMOImpl.saveMeterWaters(meterWaterPos); int flag = payFeeV1InnerServiceSMOImpl.savePayFee(payFeePo); if (flag < 1) { throw new CmdException("保存数据失败"); } FeeAttrPo feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME); feeAttrPo.setValue(reqJson.getString("curReadingTime")); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } //todo 保存 房屋名称 feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_PAY_OBJECT_NAME); feeAttrPo.setValue(po.getFloorNum() + "-" + po.getUnitNum() + "-" + po.getRoomNum()); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } OwnerDto ownerDto = new OwnerDto(); ownerDto.setCommunityId(reqJson.getString("communityId")); ownerDto.setRoomId(reqJson.getString("objId")); List ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto); if (ownerDtos != null && ownerDtos.size() > 0) { feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID); feeAttrPo.setValue(ownerDtos.get(0).getOwnerId()); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK); feeAttrPo.setValue(ownerDtos.get(0).getLink()); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME); feeAttrPo.setValue(ownerDtos.get(0).getName()); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } } } private void validateRoom(MeterWaterPo po, AssetImportLogDetailDto assetImportLogDetailDto) { RoomDto roomDto = new RoomDto(); roomDto.setRoadName(po.getRoadName()); roomDto.setFloorNum(po.getFloorNum()); roomDto.setCommunityId(po.getCommunityId()); roomDto.setUnitNum(po.getUnitNum()); roomDto.setRoomNum(po.getRoomNum()); List roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); if (roomDtos.isEmpty()) { // throw new IllegalArgumentException("未查询到房屋:" + po.getObjName()); ImportOwnerRoomDto importOwnerRoomDto = new ImportOwnerRoomDto();//房屋 importOwnerRoomDto.setRoomId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_roomId)); importOwnerRoomDto.setOwnerId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId)); importOwnerRoomDto.setUserId(po.getUserId()); importOwnerRoomDto.setLayerCount("0"); importOwnerRoomDto.setLayer("0"); importOwnerRoomDto.setLift("未知"); importOwnerRoomDto.setSection("10102"); importOwnerRoomDto.setOwnerTypeCd("1001"); importOwnerRoomDto.setPersonType(OwnerDto.PERSON_TYPE_PERSON); importOwnerRoomDto.setPersonRole(OwnerDto.PERSON_ROLE_OWNER); importOwnerRoomDto.setRoomSubType(RoomDto.ROOM_SUB_TYPE_HOUSE); importOwnerRoomDto.setCommunityId(po.getCommunityId());//小区编号 //--------- importOwnerRoomDto.setRoadName(roomDto.getRoadName());//路名 importOwnerRoomDto.setFloorNum(roomDto.getFloorNum());//弄 importOwnerRoomDto.setUnitNum(roomDto.getUnitNum());//门 importOwnerRoomDto.setRoomNum(roomDto.getRoomNum());//室 importOwnerRoomDto.setDoorRoomNum(roomDto.getUnitNum() + "-" + roomDto.getRoomNum());//门市号 importOwnerRoomDto.setPropertyAddress( roomDto.getRoadName() + roomDto.getFloorNum() + roomDto.getUnitNum() + roomDto.getRoomNum() );//业主地址 importOwnerRoomDto.setBuiltUpArea("0");//面积 importOwnerRoomDto.setRoomArea("0");//面积 importOwnerRoomDto.setRoomRent("0");//面积 importOwnerRoomDto.setSellState(RoomDto.STATE_FREE);//房屋状态 importOwnerRoomDto.setRoomState(Vtil.defaultValue(importOwnerRoomDto.getOwnerName()).equals("") ? "2004" : "2001"); int i = importOwnerRoomInnerServiceSMOImpl.saveOwnerRoom(importOwnerRoomDto); if (i == 0) { throw new IllegalArgumentException("房屋添加错误"); } po.setObjId(importOwnerRoomDto.getRoomId()); } else if (roomDtos.size() > 1) { throw new IllegalArgumentException("存在重复的房屋:" + po.getObjName()); } else { po.setObjId(roomDtos.get(0).getRoomId()); } } }