Bläddra i källkod

Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

Your Name 3 år sedan
förälder
incheckning
3fe2aea782

+ 16 - 15
service-common/src/main/java/com/java110/common/smartMeter/SmartMeterCoreReadImpl.java

@@ -81,12 +81,27 @@ public class SmartMeterCoreReadImpl implements ISmartMeterCoreRead {
         List<MeterMachineDto> meterMachineDtos = meterMachineV1InnerServiceSMOImpl.queryMeterMachines(meterMachineDto);
         Assert.listOnlyOne(meterMachineDtos, "表不存在");
 
+        String preDegrees = "0";
+        String preReadingTime = DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A);
+
+        //费用抄表
+        MeterWaterDto meterWaterDto = new MeterWaterDto();
+        meterWaterDto.setObjType(MeterWaterDto.OBJ_TYPE_ROOM);
+        meterWaterDto.setObjId(meterMachineDtos.get(0).getRoomId());
+        meterWaterDto.setCommunityId(meterMachineDtos.get(0).getCommunityId());
+        meterWaterDto.setMeterType(meterMachineDtos.get(0).getMeterType());
+        List<MeterWaterDto> meterWaterDtos = meterWaterInnerServiceSMOImpl.queryMeterWaters(meterWaterDto);
+
+        if (meterWaterDtos != null && meterWaterDtos.size() > 0) {
+            preDegrees = meterWaterDtos.get(0).getCurDegrees();
+            preReadingTime = meterWaterDtos.get(0).getCurReadingTime();
+        }
 
         MeterMachineDetailPo meterMachineDetailPo = new MeterMachineDetailPo();
         meterMachineDetailPo.setDetailId(meterMachineDetailDto.getDetailId());
         meterMachineDetailPo.setCurDegrees(degree);
         meterMachineDetailPo.setState(MeterMachineDetailDto.STATE_C);
-        meterMachineDetailPo.setPrestoreDegrees(degree);
+        meterMachineDetailPo.setPrestoreDegrees(preDegrees);
         meterMachineDetailPo.setCurReadingTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
         meterMachineDetailV1InnerServiceSMOImpl.updateMeterMachineDetail(meterMachineDetailPo);
 
@@ -102,21 +117,7 @@ public class SmartMeterCoreReadImpl implements ISmartMeterCoreRead {
             return;
         }
 
-        String preDegrees = "0";
-        String preReadingTime = DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A);
-
-        //费用抄表
-        MeterWaterDto meterWaterDto = new MeterWaterDto();
-        meterWaterDto.setObjType(MeterWaterDto.OBJ_TYPE_ROOM);
-        meterWaterDto.setObjId(meterMachineDtos.get(0).getRoomId());
-        meterWaterDto.setCommunityId(meterMachineDtos.get(0).getCommunityId());
-        meterMachinePo.setMeterType(meterMachineDtos.get(0).getMeterType());
-        List<MeterWaterDto> meterWaterDtos = meterWaterInnerServiceSMOImpl.queryMeterWaters(meterWaterDto);
 
-        if (meterWaterDtos != null && meterWaterDtos.size() > 0) {
-            preDegrees = meterWaterDtos.get(0).getPreDegrees();
-            preReadingTime = meterWaterDtos.get(0).getCurReadingTime();
-        }
 
         CommunityMemberDto communityMemberDto = new CommunityMemberDto();
         communityMemberDto.setCommunityId(meterMachineDtos.get(0).getCommunityId());

+ 31 - 0
service-common/src/main/java/com/java110/common/smartMeter/factory/zhongkong/WyRequestUtils.java

@@ -97,5 +97,36 @@ public class WyRequestUtils {
         return response.getBody();
     }
 
+    /**
+     * 请求充电桩 接口
+     * <p>
+     * MappingCache.getValue(DING_DING_DOMAIN, DING_DING_APP_ID),
+     * MappingCache.getValue(DING_DING_DOMAIN, DING_DING_APP_SECURE
+     *
+     * @param url
+     * @param reqMap
+     * @param httpMethod
+     * @return
+     * @throws Exception
+     */
+    public static String executeReads(String url, Map<String, String> reqMap, HttpMethod httpMethod)  {
+        RestTemplate outRestTemplate = ApplicationContextFactory.getBean("outRestTemplate", RestTemplate.class);
+        HttpHeaders httpHeaders = new HttpHeaders();
+        HttpEntity httpEntity = null;
+        if(reqMap != null) {
+            //reqMap.put("sign", getSign(reqMap));
+            httpEntity = new HttpEntity(JSONObject.toJSONString(reqMap), httpHeaders);
+        }else{
+            httpEntity = new HttpEntity("", httpHeaders);
+        }
+        ResponseEntity<String> response = null;
+        try {
+            response = outRestTemplate.exchange(url, httpMethod, httpEntity, String.class);
+        } catch (HttpStatusCodeException e) {
+            logger.error("请求异常", e.getResponseBodyAsString());
+            return e.getResponseBodyAsString();
+        }
 
+        return response.getBody();
+    }
 }

+ 102 - 4
service-common/src/main/java/com/java110/common/smartMeter/factory/zhongkong/ZhongkongDianBiaoFactoryAdaptImpl.java

@@ -1,16 +1,30 @@
 package com.java110.common.smartMeter.factory.zhongkong;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.java110.common.smartMeter.ISmartMeterCoreRead;
 import com.java110.common.smartMeter.ISmartMeterFactoryAdapt;
+import com.java110.common.smartMeter.factory.tqdianbiao.TdDianBiaoUtil;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.meterMachine.MeterMachineDetailDto;
 import com.java110.dto.meterMachine.MeterMachineDto;
+import com.java110.dto.meterMachine.MeterMachineSpecDto;
+import com.java110.intf.common.IMeterMachineDetailV1InnerServiceSMO;
+import com.java110.intf.common.IMeterMachineSpecV1InnerServiceSMO;
+import com.java110.intf.common.IMeterMachineV1InnerServiceSMO;
 import com.java110.intf.fee.IPayFeeConfigV1InnerServiceSMO;
+import com.java110.po.meterMachineDetail.MeterMachineDetailPo;
+import com.java110.utils.cache.UrlCache;
+import com.java110.utils.util.Assert;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpMethod;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -21,13 +35,31 @@ import java.util.Map;
 @Service("zhongkongDianBiaoFactoryAdaptImpl")
 public class ZhongkongDianBiaoFactoryAdaptImpl implements ISmartMeterFactoryAdapt {
 
-    private static final String RECHARGE_URL = "http://watergateway.dev.mj.ink:9900/mjkj-water/mjkj/open/wy/recharge";
 
-    private static final String READ_URL = "http://watergateway.dev.mj.ink:9900/mjkj-water/mjkj/open/wy/get/amount";
+    private static final String RECHARGE_URL = "http://www.zhckxt.com/api/mjkj-water/mjkj/open/wy/recharge";
+
+    private static final String READ_URL = "http://www.zhckxt.com/api/mjkj-water/mjkj/open/wy/get/amount";
+
+    private static final String READS_URL = "http://www.zhckxt.com/api/mjkj-water/mjkj/open/wy/get/lastNum";
+
+    private static final String NOTIFY_URL = "/app/smartMeter/notify/zhongkongDianBiaoFactoryAdaptImpl/992020051967020024";
+
+
+    @Autowired
+    private IMeterMachineSpecV1InnerServiceSMO meterMachineSpecV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IMeterMachineDetailV1InnerServiceSMO meterMachineDetailV1InnerServiceSMOImpl;
 
     @Autowired
     private IPayFeeConfigV1InnerServiceSMO feeConfigV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IMeterMachineV1InnerServiceSMO meterMachineV1InnerServiceSMOImpl;
+
+    @Autowired
+    private ISmartMeterCoreRead smartMeterCoreReadImpl;
+
 
     @Override
     public ResultVo requestRecharge(MeterMachineDto meterMachineDto, double degree, double money) {
@@ -75,11 +107,77 @@ public class ZhongkongDianBiaoFactoryAdaptImpl implements ISmartMeterFactoryAdap
 
     @Override
     public ResultVo requestReads(List<MeterMachineDto> meterMachineDtos) {
-        return null;
+
+        List<Map<String, Object>> req = new ArrayList<>();
+        List<MeterMachineDetailPo> meterMachineDetailPos = new ArrayList<>();
+        String detailId = "";
+        List<String> bhLists = new ArrayList<>();
+        for (MeterMachineDto meterMachineDto : meterMachineDtos) {
+            detailId = GenerateCodeFactory.getGeneratorId("11");
+            bhLists.add(meterMachineDto.getAddress());
+            MeterMachineDetailPo meterMachineDetailPo = new MeterMachineDetailPo();
+            meterMachineDetailPo.setCommunityId(meterMachineDto.getCommunityId());
+            meterMachineDetailPo.setDetailId(detailId);
+            meterMachineDetailPo.setMachineId(meterMachineDto.getMachineId());
+            meterMachineDetailPo.setDetailType(meterMachineDto.getMachineModel()); // 抄表
+            meterMachineDetailPo.setCurDegrees(meterMachineDto.getCurDegrees());
+            meterMachineDetailPo.setCurReadingTime(meterMachineDto.getCurReadingTime());
+            meterMachineDetailPo.setPrestoreDegrees(meterMachineDto.getPrestoreDegrees());
+            meterMachineDetailPo.setState(MeterMachineDetailDto.STATE_W);
+            meterMachineDetailPos.add(meterMachineDetailPo);
+        }
+
+        Map reqParams = new HashMap();
+        reqParams.put("callbackUrl",UrlCache.getOwnerUrl() + NOTIFY_URL);
+        reqParams.put("bhList",bhLists);
+
+        String response = WyRequestUtils.executeReads(READS_URL, reqParams, HttpMethod.POST);
+
+        JSONObject paramOut = JSONObject.parseObject(response);
+
+        if (paramOut.getIntValue("code") != 200) {
+            return new ResultVo(ResultVo.CODE_ERROR, paramOut.getString("msg"));
+        }
+
+
+
+        if (meterMachineDetailPos.size() > 0) {
+            meterMachineDetailV1InnerServiceSMOImpl.saveMeterMachineDetails(meterMachineDetailPos);
+        }
+
+        return new ResultVo(ResultVo.CODE_OK, "请求已发送,等待电表反馈数据");
     }
 
     @Override
     public ResultVo notifyReadData(String readData) {
-        return null;
+
+        JSONObject data = JSONObject.parseObject(readData);
+
+        MeterMachineDto meterMachineDto = new MeterMachineDto();
+        meterMachineDto.setAddress(data.getString("bh"));
+        List<MeterMachineDto> meterMachineDtos = meterMachineV1InnerServiceSMOImpl.queryMeterMachines(meterMachineDto);
+        Assert.listOnlyOne(meterMachineDtos,"表不存在");
+
+        MeterMachineDetailDto meterMachineDetailDto = new MeterMachineDetailDto();
+        meterMachineDetailDto.setCommunityId(meterMachineDtos.get(0).getCommunityId());
+        meterMachineDetailDto.setMachineId(meterMachineDtos.get(0).getMachineId());
+        meterMachineDetailDto.setState(MeterMachineDetailDto.STATE_W);
+        List<MeterMachineDetailDto> meterMachineDetailDtos = meterMachineDetailV1InnerServiceSMOImpl.queryMeterMachineDetails(meterMachineDetailDto);
+        if (meterMachineDetailDtos == null || meterMachineDetailDtos.size() < 1) {
+            return new ResultVo(ResultVo.CODE_ERROR, "没有数据");
+        }
+
+        String batchId = smartMeterCoreReadImpl.generatorBatch(meterMachineDetailDtos.get(0).getCommunityId());
+        doBusiness(data, batchId,meterMachineDetailDtos);
+
+        return new ResultVo(ResultVo.CODE_OK, "成功");
+    }
+
+
+    private void doBusiness(JSONObject contentObject, String batchId, List<MeterMachineDetailDto> meterMachineDetailDtos) {
+
+        double degree = contentObject.getDoubleValue("bqds");
+
+        smartMeterCoreReadImpl.saveMeterAndCreateFee(meterMachineDetailDtos.get(0), degree + "", batchId);
     }
 }

+ 1 - 1
service-common/src/main/java/com/java110/common/smo/impl/NotifySmartMeterV1InnerServiceSMOImpl.java

@@ -70,7 +70,7 @@ public class NotifySmartMeterV1InnerServiceSMOImpl extends BaseServiceSMO implem
 
         try {
             MeterMachineFactoryDto meterMachineFactoryDto = new MeterMachineFactoryDto();
-            meterMachineFactoryDto.setFactoryId(notifyMeterWaterOrderDto.getImplBean());
+            meterMachineFactoryDto.setBeanImpl(notifyMeterWaterOrderDto.getImplBean());
             List<MeterMachineFactoryDto> meterMachineFactoryDtos = meterMachineFactoryV1InnerServiceSMOImpl.queryMeterMachineFactorys(meterMachineFactoryDto);
             Assert.listOnlyOne(meterMachineFactoryDtos, "智能水电表厂家不存在");