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.setAmount(po.getUnitPrice()); if (payFeePo.getAmount().equals("")){ payFeePo.setAmount("-1"); } payFeePo.setFeeTypeCd(po.getFeeTypeCd()); payFeePo.setConfigId(po.getConfigId()); payFeePo.setPayerObjId(po.getObjId()); payFeePo.setStartTime(po.getCurReadingTime()); payFeePo.setEndTime(po.getPreReadingTime()); payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_FINISH); int i = meterWaterInnerServiceSMOImpl.queryMeterWatersCount(BeanConvertUtil.covertBean(BeanConvertUtil.beanCovertMap(po), MeterWaterDto.class)); if (i > 0) { throw new IllegalArgumentException("重复的电费导入"); } payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId)); payFeePo.setBatchId(batchId); payFeePo.setbId("-1"); 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); 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(Vtil.defaultValueToNumber(po.getFloorNum())); roomDto.setCommunityId(po.getCommunityId()); roomDto.setUnitNum(Vtil.defaultValueToNumber(po.getUnitNum())); roomDto.setRoomNum(Vtil.defaultValueToNumber(po.getRoomNum())); if (roomDto.getRoomNum().isEmpty()) { roomDto.setRoomNumIsNull("yes"); } 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()); } } }