lin 4 gadi atpakaļ
vecāks
revīzija
b7a13579b3

+ 11 - 0
smart-city-job/src/main/java/com/zcxk/job/dao/WMeterTypeMapper.java

@@ -0,0 +1,11 @@
+package com.zcxk.job.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface WMeterTypeMapper {
+    List<Integer> findDeviceTypeIdByCode(@Param("codeList") List<String> codeList);
+}

+ 2 - 0
smart-city-job/src/main/java/com/zcxk/job/dto/DeviceDto.java

@@ -114,6 +114,8 @@ public class DeviceDto extends Device {
     @ApiModelProperty(value = "系统id数组", position = 4)
     private List<Integer> sysIds ;
 
+    private List<Integer> deviceTypeIds ;
+
     private List<Integer> deviceStatusList;
 
 }

+ 11 - 7
smart-city-job/src/main/java/com/zcxk/job/service/impl/MeterReadRecordServiceImpl.java

@@ -1,9 +1,11 @@
 package com.zcxk.job.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.xxl.job.core.log.XxlJobLogger;
 import com.zcxk.job.dao.DeviceMapper;
+import com.zcxk.job.dao.WMeterTypeMapper;
 import com.zcxk.job.dto.DeviceDto;
 import com.zcxk.job.entity.Device;
 import com.zcxk.job.repository.MeterReadRecordRepository;
@@ -39,6 +41,8 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
     MeterReadRecordRepository meterReadRecordRepository;
     @Autowired
     private MongoTemplate mongoTemplate;
+    @Autowired
+    private WMeterTypeMapper wMeterTypeMapper;
     @Resource
     private RedisUtil redisUtil;
 
@@ -46,12 +50,12 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
     public void createMeterReadRecord(String param, int index, int total) {
         JSONObject obj = JSONObject.parseObject(param);
         XxlJobLogger.log("obj:{}", obj);
+        List<String> codeList =  JSON.parseArray(obj.getString("code"),String.class);
+
         DeviceDto deviceParam = new DeviceDto();
-        List<Integer> channelIds = new ArrayList<Integer>();
-        //channelIds.add(-99); // 新装水表
-        //channelIds.add(15);
-        //channelIds = (List<Integer>) obj.getJSONArray("channelIds");
-        deviceParam.setSysIds(channelIds);
+
+        List<Integer> deviceTypeIds = wMeterTypeMapper.findDeviceTypeIdByCode(codeList);
+        deviceParam.setDeviceTypeIds(deviceTypeIds);
         /*List<Integer> statusList = new ArrayList<Integer>();
         statusList.add(1); // 正常
         statusList.add(2); // 故障
@@ -70,8 +74,8 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
 
         XxlJobLogger.log("按分片查询 start:{},pageSize:{}", start, pageSize);
         List<DeviceDto> deviceList = deviceMapper.getDeviceList(deviceParam, start, pageSize);
+        Integer readDate = Integer.valueOf(LocalDateTime.now().plusDays(1).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
         if (deviceList != null && deviceList.size() > 0) {
-            Integer readDate = Integer.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
             List<MeterReadRecord> meterReadRecordList = new ArrayList<>();
             AtomicInteger count = new AtomicInteger(0);
             for (DeviceDto deviceDto : deviceList) {
@@ -91,7 +95,7 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
                 meterReadRecord.setCityId(deviceDto.getCity());
                 meterReadRecord.setRegionId(deviceDto.getRegion());
                 meterReadRecord.setDeviceTypeId(deviceDto.getDeviceType());
-                meterReadRecord.setReadTime(LocalDateTime.now());
+                //meterReadRecord.setReadTime(LocalDateTime.now());
                 meterReadRecord.setReadData("");
                 meterReadRecord.setReadStatus(1);
                 meterReadRecord.setLastValid("");

+ 7 - 0
smart-city-job/src/main/java/com/zcxk/job/service/jobhandler/WaterMeterReadJob.java

@@ -23,6 +23,13 @@ public class WaterMeterReadJob {
     @XxlJob("waterMeterReadJobHandler")
     public ReturnT<String> waterMeterReadJobHandler(String param) throws Exception {
 
+         /*
+        参数格式如下:
+        {
+            "code": ["YFFJK","GDZD","WXYC","YXYC","LORAWM","NBWM","LORAM","QBTGDZD"]
+        }
+         */
+
         // 分片参数
         ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
         XxlJobLogger.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardingVO.getIndex(), shardingVO.getTotal());

+ 9 - 2
smart-city-job/src/main/resources/mapper/DeviceMapper.xml

@@ -316,10 +316,13 @@
       and sys_id in
       <foreach collection="device.sysIds" item="item" open="(" separator="," close=")">#{item} </foreach>
     </if>
+    <if test="device.deviceTypeIds != null and device.deviceTypeIds.size() != 0">
+      and device_type in
+      <foreach collection="device.deviceTypeIds" item="item" open="(" separator="," close=")">#{item} </foreach>
+    </if>
   </select>
 
-  <select
-          id="getDeviceList" resultType="com.zcxk.job.dto.DeviceDto">
+  <select id="getDeviceList" resultType="com.zcxk.job.dto.DeviceDto">
     SELECT
     d.id as id,
     d.device_no as device_no,
@@ -351,6 +354,10 @@
       and d.sys_id in
       <foreach collection="device.sysIds" item="item" open="(" separator="," close=")">#{item} </foreach>
     </if>
+    <if test="device.deviceTypeIds != null and device.deviceTypeIds.size() != 0">
+      and d.device_type in
+      <foreach collection="device.deviceTypeIds" item="item" open="(" separator="," close=")">#{item} </foreach>
+    </if>
     and d.status = 1
     order by d.id desc,d.date_create asc
     limit #{offset}, #{limit}

+ 13 - 0
smart-city-job/src/main/resources/mapper/WMeterTypeMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zcxk.job.dao.WMeterTypeMapper">
+
+
+  <select id="findDeviceTypeIdByCode" resultType="java.lang.Integer">
+    select device_type_id from sc_w_meter_type where status = 1
+    <if test="codeList != null and codeList.size() != 0">
+      and code in
+      <foreach collection="codeList" item="item" open="(" separator="," close=")">#{item} </foreach>
+    </if>
+  </select>
+</mapper>

+ 13 - 0
smart-city-platform/src/test/java/com/bz/smart_city/ScTest.java

@@ -1,6 +1,8 @@
 package com.bz.smart_city;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.bz.smart_city.commom.util.HttpRequest;
 import com.bz.smart_city.commom.util.Jdk8DateUtils;
 import com.bz.smart_city.commom.util.Util;
@@ -339,6 +341,17 @@ public class ScTest {
 
     }
 
+    @Test
+    public void jsonPerTest(){
+        String param = "{\n" +
+                "            \"code\": [\"YFFJK\",\"GDZD\",\"WXYC\",\"YXYC\",\"LORAWM\",\"NBWM\",\"LORAM\",\"QBTGDZD\"]\n" +
+                "        }";
+        JSONObject obj = JSONObject.parseObject(param);
+        //JSONArray list = obj.getJSONArray("code");
+        List<String> list =  JSON.parseArray(obj.getString("code"),String.class);
+        System.out.println(list);
+    }
+