Your Name лет назад: 3
Родитель
Сommit
f3a24e897a

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/meterMachine/MeterMachineDto.java

@@ -43,6 +43,8 @@ public class MeterMachineDto extends PageDto implements Serializable {
     private double rechargeDegree;
     private double rechargeMoney;
 
+    private String degree;
+
     private List<MeterMachineSpecDto> specs;
 
 
@@ -263,4 +265,12 @@ public class MeterMachineDto extends PageDto implements Serializable {
     public void setRechargeMoney(double rechargeMoney) {
         this.rechargeMoney = rechargeMoney;
     }
+
+    public String getDegree() {
+        return degree;
+    }
+
+    public void setDegree(String degree) {
+        this.degree = degree;
+    }
 }

+ 18 - 0
service-common/src/main/java/com/java110/common/cmd/meterMachine/ListMeterMachineCmd.java

@@ -16,6 +16,7 @@
 package com.java110.common.cmd.meterMachine;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.common.smartMeter.ISmartMeterCoreRead;
 import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.context.ICmdDataFlowContext;
@@ -64,6 +65,9 @@ public class ListMeterMachineCmd extends Cmd {
     @Autowired
     private IMeterMachineSpecV1InnerServiceSMO meterMachineSpecV1InnerServiceSMOImpl;
 
+    @Autowired
+    private ISmartMeterCoreRead smartMeterCoreReadImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         super.validatePageInfo(reqJson);
@@ -82,6 +86,7 @@ public class ListMeterMachineCmd extends Cmd {
         if (count > 0) {
             meterMachineDtos = meterMachineV1InnerServiceSMOImpl.queryMeterMachines(meterMachineDto);
             freshSpecs(meterMachineDtos);
+            queryMeterMachineDegree(meterMachineDtos);
         } else {
             meterMachineDtos = new ArrayList<>();
         }
@@ -93,6 +98,19 @@ public class ListMeterMachineCmd extends Cmd {
         cmdDataFlowContext.setResponseEntity(responseEntity);
     }
 
+    private void queryMeterMachineDegree(List<MeterMachineDto> meterMachineDtos) {
+        if (meterMachineDtos == null || meterMachineDtos.size() != 1) {
+            return;
+        }
+
+        if (!MeterMachineDto.MACHINE_MODEL_RECHARGE.equals(meterMachineDtos.get(0).getMachineModel())) {
+            return;
+        }
+
+        double degree = smartMeterCoreReadImpl.getMeterDegree(meterMachineDtos.get(0));
+        meterMachineDtos.get(0).setDegree(degree + "");
+    }
+
     /**
      * 刷入配置
      *

+ 8 - 0
service-common/src/main/java/com/java110/common/smartMeter/ISmartMeterCoreRead.java

@@ -1,5 +1,6 @@
 package com.java110.common.smartMeter;
 
+import com.java110.dto.meterMachine.MeterMachineDto;
 import com.java110.dto.meterMachineDetail.MeterMachineDetailDto;
 
 /**
@@ -13,4 +14,11 @@ public interface ISmartMeterCoreRead {
     void saveMeterAndCreateFee(MeterMachineDetailDto meterMachineDetailDto, String degree,String batchId);
 
     String generatorBatch(String communityId);
+
+    /**
+     * 查询 表读数
+     * @param meterMachineDto
+     * @return
+     */
+    double getMeterDegree(MeterMachineDto meterMachineDto);
 }

+ 27 - 0
service-common/src/main/java/com/java110/common/smartMeter/SmartMeterCoreReadImpl.java

@@ -7,10 +7,12 @@ import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.meterMachine.MeterMachineDto;
 import com.java110.dto.meterMachineDetail.MeterMachineDetailDto;
+import com.java110.dto.meterMachineFactory.MeterMachineFactoryDto;
 import com.java110.dto.meterWater.MeterWaterDto;
 import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.payFeeBatch.PayFeeBatchDto;
 import com.java110.intf.common.IMeterMachineDetailV1InnerServiceSMO;
+import com.java110.intf.common.IMeterMachineFactoryV1InnerServiceSMO;
 import com.java110.intf.common.IMeterMachineV1InnerServiceSMO;
 import com.java110.intf.community.ICommunityMemberV1InnerServiceSMO;
 import com.java110.intf.fee.*;
@@ -22,9 +24,11 @@ import com.java110.po.meterMachineDetail.MeterMachineDetailPo;
 import com.java110.po.meterWater.MeterWaterPo;
 import com.java110.po.payFeeBatch.PayFeeBatchPo;
 import com.java110.utils.exception.CmdException;
+import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.Assert;
 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;
 
@@ -65,6 +69,9 @@ public class SmartMeterCoreReadImpl implements ISmartMeterCoreRead {
     @Autowired
     private IPayFeeConfigV1InnerServiceSMO payFeeConfigV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IMeterMachineFactoryV1InnerServiceSMO meterMachineFactoryV1InnerServiceSMOImpl;
+
     @Override
     public void saveMeterAndCreateFee(MeterMachineDetailDto meterMachineDetailDto, String degree, String batchId) {
 
@@ -246,4 +253,24 @@ public class SmartMeterCoreReadImpl implements ISmartMeterCoreRead {
         return payFeeBatchPo.getBatchId();
     }
 
+    @Override
+    public double getMeterDegree(MeterMachineDto meterMachineDto) {
+
+        MeterMachineFactoryDto meterMachineFactoryDto = new MeterMachineFactoryDto();
+        meterMachineFactoryDto.setFactoryId(meterMachineDto.getImplBean());
+        List<MeterMachineFactoryDto> meterMachineFactoryDtos = meterMachineFactoryV1InnerServiceSMOImpl.queryMeterMachineFactorys(meterMachineFactoryDto);
+        Assert.listOnlyOne(meterMachineFactoryDtos, "智能水电表厂家不存在");
+        ISmartMeterFactoryAdapt smartMeterFactoryAdapt = ApplicationContextFactory.getBean(meterMachineFactoryDtos.get(0).getBeanImpl(), ISmartMeterFactoryAdapt.class);
+        if (smartMeterFactoryAdapt == null) {
+            throw new CmdException("厂家接口未实现");
+        }
+
+        ResultVo resultVo = smartMeterFactoryAdapt.requestRead(meterMachineDto);
+
+        if(ResultVo.CODE_OK != resultVo.getCode()){
+            return 0.0;
+        }
+        return Double.parseDouble(resultVo.getData().toString());
+    }
+
 }