package com.java110.job.importData.adapt; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.fee.FeeConfigDto; import com.java110.dto.importData.ImportMeterMachineDto; import com.java110.dto.importData.ImportOwnerRoomDto; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.meter.MeterMachineDto; import com.java110.dto.meter.MeterTypeDto; import com.java110.dto.room.RoomDto; import com.java110.intf.common.IMeterMachineSpecV1InnerServiceSMO; import com.java110.intf.common.IMeterMachineV1InnerServiceSMO; import com.java110.intf.community.IRoomV1InnerServiceSMO; import com.java110.intf.fee.IFeeConfigInnerServiceSMO; import com.java110.intf.fee.IMeterTypeV1InnerServiceSMO; import com.java110.job.importData.DefaultImportData; import com.java110.job.importData.IImportDataAdapt; import com.java110.po.meter.MeterMachinePo; import com.java110.po.meter.MeterMachineSpecPo; import com.java110.utils.exception.CmdException; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service("importMeterMachineQueueData") public class ImportMeterMachineQueueDataAdapt extends DefaultImportData implements IImportDataAdapt { public static final String CODE_PREFIX_ID = "10"; @Autowired private IMeterMachineV1InnerServiceSMO meterMachineV1InnerServiceSMOImpl; @Autowired private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl; @Autowired private IMeterMachineSpecV1InnerServiceSMO meterMachineSpecV1InnerServiceSMOImpl; @Autowired private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl; @Autowired private IMeterTypeV1InnerServiceSMO meterTypeV1InnerServiceSMOImpl; @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); } } } /** * 导入数据 * * @param assetImportLogDetailDto */ private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) { JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent()); ImportMeterMachineDto importMeterMachineDto = BeanConvertUtil.covertBean(data, ImportMeterMachineDto.class); FeeConfigDto feeConfigDto = new FeeConfigDto(); feeConfigDto.setFeeName(importMeterMachineDto.getFeeName()); feeConfigDto.setCommunityId(importMeterMachineDto.getCommunityId()); List feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto); Assert.listOnlyOne(feeConfigDtos, "费用项不存在或存在多条"); String[] roomItems = importMeterMachineDto.getRoomName().split("-", 3); //查询房屋 RoomDto roomDto = new RoomDto(); roomDto.setFloorNum(roomItems[0]); roomDto.setUnitNum(roomItems[1]); roomDto.setRoomNum(roomItems[2]); roomDto.setCommunityId(importMeterMachineDto.getCommunityId()); List roomDtos = roomV1InnerServiceSMOImpl.queryRooms(roomDto); Assert.listOnlyOne(roomDtos, "房屋不存在"); MeterTypeDto meterTypeDto = new MeterTypeDto(); meterTypeDto.setCommunityId(importMeterMachineDto.getCommunityId()); meterTypeDto.setTypeName(importMeterMachineDto.getMeterType()); List meterTypeDtos = meterTypeV1InnerServiceSMOImpl.queryMeterTypes(meterTypeDto); Assert.listOnlyOne(meterTypeDtos, "抄表类型不存在"); MeterMachinePo meterMachinePo = BeanConvertUtil.covertBean(importMeterMachineDto, MeterMachinePo.class); meterMachinePo.setMachineId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); meterMachinePo.setFeeConfigName(feeConfigDtos.get(0).getFeeName()); meterMachinePo.setCurDegrees("0"); meterMachinePo.setCurReadingTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); meterMachinePo.setPrestoreDegrees("0"); meterMachinePo.setHeartbeatTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); meterMachinePo.setFeeConfigId(feeConfigDtos.get(0).getConfigId()); meterMachinePo.setReadDay(1); meterMachinePo.setReadHours(1); meterMachinePo.setRoomId(roomDtos.get(0).getRoomId()); meterMachinePo.setMeterType(meterTypeDtos.get(0).getTypeId()); int flag = meterMachineV1InnerServiceSMOImpl.saveMeterMachine(meterMachinePo); if (flag < 1) { throw new CmdException("保存数据失败"); } if (StringUtil.isEmpty(importMeterMachineDto.getValue1())) { return; } MeterMachineSpecPo meterMachineSpecPo = null; meterMachineSpecPo = new MeterMachineSpecPo(); meterMachineSpecPo.setMachineId(meterMachinePo.getMachineId()); meterMachineSpecPo.setSpecId("120102"); meterMachineSpecPo.setSpecName("采集器ID"); meterMachineSpecPo.setSpecValue(importMeterMachineDto.getValue1()); meterMachineSpecPo.setMmsId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); meterMachineSpecPo.setCommunityId(meterMachinePo.getCommunityId()); flag = meterMachineSpecV1InnerServiceSMOImpl.saveMeterMachineSpec(meterMachineSpecPo); if (flag < 1) { throw new CmdException("保存数据失败"); } } }